Java md5 résultat changeant [Résolu]

anix 72 Messages postés samedi 29 novembre 2003Date d'inscription 24 octobre 2010 Dernière intervention - 14 juin 2010 à 21:02 - Dernière réponse : cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention
- 14 juin 2010 à 22:22
bonjour;

pourquoi ce code
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(passwd1.getBytes());
byte[] md5 = md.digest();
String md5S = md5.toString();
System.out.println("md5S = "+md5S);
donne à chaque éxécution un résultat différent pour la même valeur de passwd1, est-ce que c'est logique
comment y remédier

merci
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 14 juin 2010 à 21:40
3
Merci
Salut,

Forcément, vu que ton md5.toString() ne te renvoie pas le contenu de ton tableau mais l'adresse mémoire de celui-ci !

Il faut que tu récupères les caractères Byte par Byte pour construire ta chaîne :
md = MessageDigest.getInstance("MD5");

md.update("test".getBytes()); 
byte[] md5 = md.digest(); 
StringBuffer hexString = new StringBuffer();
for (int i=0;i<md5.length;i++) {
hexString.append(Integer.toHexString(0xFF & md5[i]));
}
System.out.println(hexString);

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Merci cs_DARKSIDIOUS 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 14 juin 2010 à 22:13
3
Merci
Salut,

StringBuffer.toString() tout simplement.

Pour le 0xFF je te laisse aller voir cecipour ta culture personnelle.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement

Merci cs_DARKSIDIOUS 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
anix 72 Messages postés samedi 29 novembre 2003Date d'inscription 24 octobre 2010 Dernière intervention - 14 juin 2010 à 21:57
0
Merci
merci beaucoup pour la réponse
mais je n'ai pas comprit pourquoi le:
0xFF & md5[i]
Commenter la réponse de anix
anix 72 Messages postés samedi 29 novembre 2003Date d'inscription 24 octobre 2010 Dernière intervention - 14 juin 2010 à 22:03
0
Merci
aussi autre probléme,
comment convertir le StringBuffer en String

merci pour les réponses
Commenter la réponse de anix
anix 72 Messages postés samedi 29 novembre 2003Date d'inscription 24 octobre 2010 Dernière intervention - 14 juin 2010 à 22:15
0
Merci
bon,
j'ai fait une conversion de String à StringBuffer (charactére par charactére)
le probléme maintenant est que le equals entre deux StringBuffer de même valeur ne marche pas
voila le code:
for (int i=0;i<password.length();i++) {
hexString1.append(password.charAt(i));
}

System.out.println("hexString1 = "+hexString1);


//correct = password.equals(hexString);
correct = hexString.equals(hexString1);

merci
Commenter la réponse de anix
anix 72 Messages postés samedi 29 novembre 2003Date d'inscription 24 octobre 2010 Dernière intervention - 14 juin 2010 à 22:20
0
Merci
bon merci
ça marche maintenant avec le:
String hexS = hexString.toString();
Commenter la réponse de anix
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 14 juin 2010 à 22:22
0
Merci
Salut,

Normal : il ne faut pas comparer le mot de passe avec le hash md5, mais le hash md5 du mot de passe avec le hash préalablement calculé :

hashMd5DeToto = "DA1247D578C54B124A4578D"; // Disons que le hash md5 de "toto" est cà
!"toto".equals(hashMd5DeToto); // tu vois bien que hashMd5DeToto n'est pas égal à "toto"...
nouveauHashMd5DeTotoNouvellementSaisit = "DA1247D578C54B124A4578D"; // là bien sûr, tu doit recalculer le hash md5 du mot de passe saisit, ce qui te donnera le même hash md5 que celui calculé précédemment
nouveauHashMd5DeTotoNouvellementSaisit.equals(hashMd5DeToto);

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.