MD5-Hash eines Strings bestimmen

RungetSvohu

Bekanntes Mitglied
Hallo Leute, in meiner Funktion scheint irgendwo ein Fehler zu sein, könnt ihr mir zeigen, wo?

Java:
	public static String toMD5(String s) {
		try {
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.reset();
			md5.update(s.getBytes());
			byte[] result = md5.digest();
			StringBuffer hexString = new StringBuffer(32);
			for (int i = 0; i < result.length; i++) {
				hexString.append(Integer.toHexString(0xFF & result[i]));
			}
			return hexString.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return null;
	}

Ist der String, der rauskommt, kleiner als 32 Zeichen, dann fehlt gerne auch einmal irgendwo in der Mitte eine Null, zum Beispiel ist der MD5-Hash von "1" c4ca4238a0b923820dcc509a6f75849b, mein Programm liefert aber c4ca4238a0b92382dcc509a6f75849b.
 
auch hier die Anmerkung, statt nur komplizierte Dinge zu verwenden in Ruhe nachzudenken und Details anzuschauen,
eine einzelne Ausgabe
Java:
System.out.println("i: "+i+" | "+result[i]+" | "+Integer.toHexString(0xFF & result[i]));
in die Schleife eingebaut liefert an wertvollen Informationen
Code:
i: 0 | -60 | c4
i: 1 | -54 | ca
i: 2 | 66 | 42
i: 3 | 56 | 38
i: 4 | -96 | a0
i: 5 | -71 | b9
i: 6 | 35 | 23
i: 7 | -126 | 82
i: 8 | 13 | d
i: 9 | -52 | cc
i: 10 | 80 | 50
i: 11 | -102 | 9a
i: 12 | 111 | 6f
i: 13 | 117 | 75
i: 14 | -124 | 84
i: 15 | -101 | 9b
kannst du erkennen, an welcher Stelle das von dir schon weitgehend beschriebene Problem in dieser Ausgabe auftaucht,
was dann wohl der Detailgrund ist und wie das relativ leicht zu beheben wäre?
 

Zurück
Oben