Md5 Hash mit Java
Veröffentlicht am 22.10.2008 | Kommentar schreiben | Tags: java
Der unten gezeigte Code liefert einen zufälligen MD5-Hash. Basierend auf der Klasse Random wird eine Zufallszahl erzeugt.
Diese Zufallszahl ist Grundlage des erstellen MD5-Hashs. Es gibt viele Situationen, in denen man genau so etwas braucht.
public static String generateValue() { Random r = new Random(); int n = r.nextInt(); MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } String s = "" + n; md5.reset(); md5.update(s.getBytes()); byte[] result = md5.digest(); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < result.length; i++) { hexString.append(Integer.toHexString(0xFF & result[i])); } return hexString.toString(); }
kleiner Fehler im Code: Ist ein Byte kleiner als 0x10, so wird bei hexString.append(...) nur ein einzelnes char angehängt, d.h. z.B. 'b' statt '0b'. Somit als Zufallsstring ok, aber kein md5 der Zufallszahl.
So klappts:
for (int i = 0; i < result.length; i++)
{
if ((0xFF & result[i]) < 16)
hexString.append("0");
hexString.append(Integer.toHexString(0xFF & result[i]));
}
Es gab noch einen Fehler: Hier korrekt
for (int i = 0; i < result.length; i++) {
if ((0xFF & result[i]) < 16){
hexString.append("0" + Integer.toHexString(0xFF & result[i]));
}
else{
hexString.append(Integer.toHexString(0xFF & result[i]));
}
}
Und wofür braucht man sowas?