Can anyone know how to convert the MD5 to String. In my case I have saved the password in MD5 in database. I am trying to retr
MD5 is single side hash function. So you cannot decode it. This is why on many web sites you have options "retrieve password" by creating new one.
More about MD5
String password = "123456";
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(password.getBytes());
byte byteData[] = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++)
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
System.out.println("Digest(in hex format):: " + sb.toString());
Code for convert String to MD5
private static String convertToMd5(final String md5) throws UnsupportedEncodingException {
StringBuffer sb=null;
try {
final java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
final byte[] array = md.digest(md5.getBytes("UTF-8"));
sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString();
} catch (final java.security.NoSuchAlgorithmException e) {
}
return sb.toString();
}
I think that is the most elegant way to do that:
public String getMD5(String data) {
String result = null;
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.update(data.getBytes(Charset.forName("UTF-8")));
result = String.format(Locale.ROOT, "%032x", new BigInteger(1, md.digest()));
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(e);
}
return result;
}
`