package
java_cryptography;
import
java.io.ByteArrayOutputStream;
import
java.security.MessageDigest;
import
java.util.UUID;
import
javax.xml.bind.DatatypeConverter;
import
sun.security.provider.SecureRandom;
public
class
Hashing {
private
static
final
String SHA2_ALGORITHM
=
"SHA-256"
;
public
static
byte
[] Creating_Random_Salt()
{
byte
[] salt =
new
byte
[
16
];
SecureRandom secure_random
=
new
SecureRandom();
secure_random.engineNextBytes(salt);
return
salt;
}
public
static
byte
[] Creating_SHA2_Hash(
String input,
byte
[] salt)
throws
Exception
{
ByteArrayOutputStream byte_Stream
=
new
ByteArrayOutputStream();
byte_Stream.write(salt);
byte_Stream.write(input.getBytes());
byte
[] valueToHash
= byte_Stream.toByteArray();
MessageDigest messageDigest
= MessageDigest
.getInstance(SHA2_ALGORITHM);
return
messageDigest
.digest(valueToHash);
}
public
static
void
main(String args[])
throws
Exception
{
byte
[] salt = Creating_Random_Salt();
System.out.println(
"SALT_VALUE: "
+ DatatypeConverter.printHexBinary(salt));
String valueToHash
= UUID.randomUUID().toString();
byte
[] hash1
= Creating_SHA2_Hash(valueToHash, salt);
byte
[] hash2
= Creating_SHA2_Hash(valueToHash, salt);
System.out.println(
"HASH1_VALUE: "
+ DatatypeConverter
.printHexBinary(hash1));
System.out.println(
"HASH2_VALUE: "
+ DatatypeConverter
.printHexBinary(hash2));
}
}