2012-07-26 1 views
5

Qualcuno può sapere come convertire lo MD5 in Stringa. Nel mio caso ho salvato la password in MD5 nel database. Sto cercando di recuperare la password e visualizzarla in stringa per lo scopo di modifica.Converti MD5 in stringa in java

Questo è quello che ho fatto per la conversione della stringa in formato cifrare:

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

Io non so come convertire il formato cifrare in stringa per la modifica della password.

+11

MD5 è un one Algoritmo di modo, non è possibile ottenere una password semplice da uno codificato – bugwheels94

+0

algoritmi di hash p esalta questo risultato che non puoi recuperare l'input originale dal risultato. Se desideri tale funzionalità, prova a utilizzare la crittografia tramite l'hashing. (RSA, ad esempio) – Lopina

+1

In aggiunta a Ankit: E quella caratteristica unidirezionale è l'intera ragione per archiviarlo come MD5 in primo luogo. –

risposta

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

Il codice sopra riportato converte la stringa in formato esadecimale e la mia domanda è come tornare alla stringa. – bharathi

+5

MD% è un algoritmo a una via, non è possibile convertire la stringa esadecimale md5 nella stringa originale. – vchyzhevskyi

+0

Potrebbe essere utile aggiungere "UTF-8" come argomento su getBytes in quanto potrebbe generare un hash sbagliato quando si utilizzano caratteri latini, ad esempio. – Raimundo

6

MD5 è funzione hash su un lato. Quindi non puoi decodificarlo. Questo è il motivo per cui su molti siti web hai le opzioni "recupera la password" creandone una nuova.

More about MD5

0

codice per convertire la stringa 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

esattamente il contrario di ciò che è stato chiesto! –

-3

Credo che questo sia il modo più elegante per farlo:

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

il contrario di ciò che è stato chiesto! –