Hello! For my school project, I had been tought of crypting passwords of users. Due to the fact that, SHA1 algorithm has security problems (link) , I have decided using a SHA2. SHA2 has 3 variants: SHA256, SHA384 and SHA512. While I was searching how to implement SHA2 on Java, I have found this link.
For SHA512 that code works:
import java.security.*;
public class cryptotest {
public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest md;
String message = "password";
try {
md= MessageDigest.getInstance("SHA-512");
md.update(message.getBytes());
byte[] mb = md.digest();
String out = "";
for (int i = 0; i < mb.length; i++) {
byte temp = mb[i];
String s = Integer.toHexString(new Byte(temp));
while (s.length() < 2) {
s = "0" + s;
}
s = s.substring(s.length() - 2);
out += s;
}
System.out.println(out.length());
System.out.println("CRYPTO: " + out);
} catch (NoSuchAlgorithmException e) {
System.out.println("ERROR: " + e.getMessage());
}
}
}
If you want to hash password with SHA256
, you can change the line:
md= MessageDigest.getInstance("SHA-512");
to
md= MessageDigest.getInstance("SHA-256");
For others:
md= MessageDigest.getInstance("MD5");
md= MessageDigest.getInstance("SHA");
md= MessageDigest.getInstance("SHA-1");
md= MessageDigest.getInstance("SHA-384");
I changed the method and now i can used in my application
Thanks!
This sample is very helpful !!
Thank you for submitting IT
Very helpful, thanks.
i want to know the secrete key used in this algorithm
There are no secret keys on hashing algorithms. SHA512 is a hashing algorithm. Keys exist in public key cryptography and symmetric key cryptography.
https://en.wikipedia.org/wiki/Cryptography#Modern_cryptography
https://en.wikipedia.org/wiki/Hash_function
I Got this Exception :-
com.qoppa.pdf.PDFException: JCE Provider does not support SHA hash algorithm.
at com.qoppa.pdf.SigningInformation.b(Unknown Source)
at com.qoppa.pdf.SigningInformation.(Unknown Source)
at mypack.JMD.main(JMD.java:37)