bharathi
bharathi

Reputation: 6271

Convert MD5 into String in java

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

Answers (4)

rossa
rossa

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

Ashish Dwivedi
Ashish Dwivedi

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

Raknel
Raknel

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.

More about MD5

Upvotes: 5

wladyslaw.czyzewski
wladyslaw.czyzewski

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

Related Questions