1042 votes

Générer des hash MD5 dans Java

Existe t'il une méthode pour générer des hash MD5 d'une chaîne de caractères en Java?

705voto

koregan Points 6156

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.

625voto

Bombe Points 34185

MessageDigest est votre ami. Appel getInstance("MD5") pour obtenir un MD5 message digest vous pouvez utiliser.

273voto

user49913 Points 1663

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

258voto

lutzh Points 1994

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.

170voto

dac2009 Points 1093

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X