Existe t'il une méthode pour générer des hash MD5 d'une chaîne de caractères en Java?
Réponses
Trop de publicités?L' MessageDigest
classe peut vous fournir une instance de la somme MD5.
Lorsque l'on travaille avec des chaînes et de la crypto classes assurez-vous de toujours spécifier l'encodage que vous voulez que les octets de la représentation. Si vous venez d'utiliser string.getBytes()
il va utiliser la plate-forme par défaut. (Pas toutes les plates-formes d'utiliser les mêmes paramètres par défaut)
import java.security.*;
..
byte[] bytesOfMessage = yourString.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);
Si vous avez beaucoup de données à prendre un coup d'oeil à l' .update(byte[])
méthode qui peut être appelée plusieurs fois. Puis appelez .digest()
pour obtenir le résultant de hachage.
MessageDigest est votre ami. Appel getInstance("MD5") pour obtenir un MD5 message digest vous pouvez utiliser.
Si vous voulez vraiment la réponse comme une chaîne de caractères, par opposition à un tableau d'octets, vous pouvez toujours faire quelque chose comme ceci:
String plaintext = "your text here";
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(16);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32 ){
hashtext = "0"+hashtext;
}
Vous pouvez également regarder la DigestUtils classe de apache commons codec , qui fournit de très pratique méthodes pour créer MD5 ou SHA digère.
Trouvé ceci:
public String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer 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 (java.security.NoSuchAlgorithmException e) {
}
return null;
}
sur le site ci-dessous, je ne vais pas prendre le crédit pour cela, mais son une solution qui fonctionne! Pour moi, beaucoup d'autres le code n'a pas fonctionné correctement, j'ai fini par manque de 0 dans la table de hachage. Celui-ci semble être le même que le PHP. source: http://m2tec.be/blog/2010/02/03/java-md5-hex-0093