Ich habe in einem anderen Forum folgenden Code gefunden:
Das funktioniert auch wunderbar, aber ich verstehe den Code nicht ganz. Warum wird jedes byte mit 0xFF verundet und danach mit 0x100 verodert? Ich glaube diese Berechnungen werden durchgeführt um immer eine konstante Stringlänge zu erreichen. Kann mir das jemand etwas genauer erklären?
Danke im vorraus
Code:
private static String hex(byte[] array)
{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i)
{
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1,3));
}
return sb.toString();
}
public static String md5 (String message)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
return hex (md.digest(message.getBytes("CP1252")));
}
catch (NoSuchAlgorithmException e) { }
catch (UnsupportedEncodingException e) {}
return null;
}
Das funktioniert auch wunderbar, aber ich verstehe den Code nicht ganz. Warum wird jedes byte mit 0xFF verundet und danach mit 0x100 verodert? Ich glaube diese Berechnungen werden durchgeführt um immer eine konstante Stringlänge zu erreichen. Kann mir das jemand etwas genauer erklären?
Danke im vorraus