[Java] MD5-Summe berechnen

Kamikatze

Captain
Registriert
Okt. 2004
Beiträge
3.708
Lustig, hier gibt's schon einen Thread. Hab aber ein geringfügig anderes Problem.

Und zwar möchte ich die MD5-Summe eines Strings berechnen.
Die von mir verwendete Methode liefert mir aber keine MD5 der (allgemein bekannten) Form

AC31328A255C6219A683AD3C34D7ECF0

oder

F889E501998D5E14FED5D9E73519FEDA

zurück, sondern ein 16-stelliges Bytearray (Ziffern zwischen -128 und 127).

Wie komme ich an ein 32-stelliges Hex-Ergebnis (idealerweise als String)? Ich verwende bisher diese Methode:
Code:
    public static byte[] getMD5(String passwd) {
        MessageDigest md = null;

        try {
            md = MessageDigest.getInstance("MD5");
            md.update(passwd.getBytes());
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(JavaTools.class.getName()).log(Level.SEVERE, null, ex);
        }

        return md.digest();
    }
 
Zuletzt bearbeitet:
Probiers mal hiermit:
Code:
private static String convertToHex(byte[] data) {
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < data.length; i++) {
      int halfbyte = (data[i] >>> 4) & 0x0F;
      int two_halfs = 0;
      do {
        if ((0 <= halfbyte) && (halfbyte <= 9))
          buf.append((char) ('0' + halfbyte));
        else
          buf.append((char) ('a' + (halfbyte - 10)));
        halfbyte = data[i] & 0x0F;
      } while(two_halfs++ < 1);
    }
    return buf.toString();
  }

Als Parameter bekommt diese Methode das Ergebnis von md.digest()
 
Zurück
Oben