Bonjour
Je veux pouvoir comparer 2 chaines de caractères qui sont des strings encryptées md5.
Une de ces chaînes est stockée sous MySQL, l'autre est générée via Java. Je veux donc comparer sous JUnit qu'elles sont égales.
Voici mon code Java:
Et la fonction JUnit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Encryption { public String md5; private MessageDigest md; public Encryption() throws NoSuchAlgorithmException { md = MessageDigest.getInstance("MD5"); } private String convert(byte[]b){ StringBuffer sb = new StringBuffer(); for (int i = 0; i < b.length; i++) { int value = b[i] & 0xFF; sb.append(Integer.toHexString(value)); } return sb.toString(); } public String encrypt(String s){ byte[]input = s.getBytes(); md.update(input); byte[]output = md.digest(); return convert(output); } }
Au final, ma chaîne sous Java est "d45ecfb7e8db47628f3269b2a9681". Ce qui est différent de ce que j'attend.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static void testEncrypt() { com.bioxpr.beans.Encryption encryption = null; try{ encryption = new com.bioxpr.beans.Encryption(); } catch(java.security.NoSuchAlgorithmException nsae){ nsae.printStackTrace(); } assertEquals("0d045ecfb7e80db47628f3269b2a9681", encryption.encrypt("GLDavid")); }
Ainsi, je me demande si cette différence est dûe à mon code Java ou aux implémentations d'algos entre Java et MySQL.
Merci d'avance.
@++
Partager