2012-07-26 29 views
5

¿Alguien sabe cómo convertir el MD5 en Cadena. En mi caso, he guardado la contraseña en MD5 en la base de datos. Estoy tratando de recuperar la contraseña y mostrarla en cadena para fines de edición.Convertir MD5 en cadena en java

Esto es lo que he hecho para convertir la cadena en formato de cifrar:

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; 
} 

No sé cómo convertir el formato de cifrar en cadena para la edición de la contraseña.

+11

MD5 es un uno algoritmo de manera, no se puede obtener una contraseña simple de vuelta de uno encriptado – bugwheels94

+0

Algoritmos hash p Produce un resultado tal que no puede recuperar la entrada original del resultado. Si desea dicha funcionalidad, intente usar encriptación sobre hash. (RSA, por ejemplo) – Lopina

+1

Agregando a Ankit: Y ese rasgo unidireccional es la razón completa para almacenarlo como MD5 en primer lugar. –

Respuesta

11
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()); 
+0

El código anterior convierte la cadena en formato hexadecimal y mi pregunta es cómo volver a la cadena. – bharathi

+5

MD% es un algoritmo unidireccional, no puede convertir md5 cadena hexadecimal de nuevo a cadena original. – vchyzhevskyi

+0

Puede ser útil agregar "UTF-8" como argumento en getBytes, ya que puede generar un hash incorrecto al usar caracteres latinos, por ejemplo. – Raimundo

6

MD5 es la función hash de un solo lado. Entonces no puedes descifrarlo. Es por eso que en muchos sitios web tiene opciones de "recuperar contraseña" creando una nueva.

More about MD5

0

Código para convertir una cadena a 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(); 
    } 
+0

precisamente lo contrario de lo que se solicitó. –

-3

Creo que es la forma más elegante de hacer eso:

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; 
} 

`

+0

¡lo contrario de lo que se solicitó! –