Reputation: 6271
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 retreive the password and display it in string for the editing purpose.
This is what I have done for converting the string into encrypt format:
public static String encrypt(String source) {
String md5 = null;
try {
MessageDigest mdEnc = MessageDigest.getInstance("MD5"); //Encryption algorithm
mdEnc.update(source.getBytes(), 0, source.length());
md5 = new BigInteger(1, mdEnc.digest()).toString(16); // Encrypted string
}
catch (Exception ex) {
return null;
}
return md5;
}
I don't know how convert the encrypt format into string for editing the password.
Upvotes: 7
Views: 33555
Reputation: 119
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;
}
`
Upvotes: -3
Reputation: 8186
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();
}
Upvotes: 0
Reputation: 529
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.
Upvotes: 5
Reputation: 770
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());
Upvotes: 14