La fonction suivante dans MySQLMD5 MySQL et Java MD5 pas égal
MD5( 'secret')
génère 5ebe2294ecd0e0f08eab7690d2a6ee69
Je voudrais avoir une fonction Java pour générer la même sortie. Mais
public static String md5(String source) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(source.getBytes("UTF-8"));
return getString(bytes);
} catch(Exception e) {
e.printStackTrace();
return null;
}
}
private static String getString(byte[] bytes) {
StringBuffer sb = new StringBuffer();
for(int i=0; i<bytes.length; i++) {
byte b = bytes[ i ];
sb.append((int)(0x00FF & b));
if(i+1 <bytes.length) {
sb.append("-");
}
}
return sb.toString();
}
génère
94-190-34-148-236-208-224-240-142-171-118-144-210-166-238-105
@Randolpho: si b <0x10, vous devez pad avec 0 – laalto
Excellent point; édité pour inclure le contrôle de @ mihi (qui est meilleur IMO qu'un contrôle de valeur d'octet). – Randolpho
vous avez oublié le() dans hex.length() –