MessageDigest MD5-Algorithmus gibt nicht das zurück, was ich erwarte

Etwas in meinem Hinterkopf sagt mir, dass mir hier etwas Offensichtliches fehlt.

Ich integriere ein vorhandenes Java-Projekt in eine API eines Drittanbieters, die einen MD5-Hash eines API-Schlüssels zur Authentifizierung verwendet. Es funktioniert nicht für mich und während des Debuggens stellte ich fest, dass die Hashes, die ich generiere, nicht mit den Beispielen übereinstimmen, die sie geliefert haben. Ich habe einige Websites gefunden, die MD5-Hashes aus Zeichenfolgen erstellen, um deren Beispiele zu überprüfen. Soweit ich das beurteilen kann, habe ich Unrecht und sie haben Recht.

zum Beispiel nachDiese InternetseiteDie Zeichenfolge "Hallo" generiert einen Hash von "5d41402abc4b2a76b9719d911017c592". (FWIW Ich weiß nichts über diese Website, außer dass sie die Beispiele, die ich habe, korrekt zu hashen scheint). Wenn ich meinen Code durchlaufe, erhalte ich:

XUFAKrxLKna5cZ2REBfFkg ==

Hier ist die einfache Methode, mit der ich den MD5-Hash / String generiere:

private String md5(String md5Me) throws Exception {
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.reset();
    md.update(md5Me.getBytes("UTF-8"));

    return Base64.encodeBase64String(md.digest());
}

Ich habe letzte Woche eine sehr ähnliche Methode verwendet, um eine andere API mithilfe des SHA1-Algorithmus erfolgreich zu authentifizieren. Ich frage mich, ob das Problem mit org.apache.commons.net.util.Base64.encodeBase64String zusammenhängt ... Jede Hilfe ist sehr willkommen, wenn nur einige Tests prüfen, ob das ByteArray korrekt ist, aber die konvertierte Zeichenfolge falsch ist .

Antworten auf die Frage(2)

Ihre Antwort auf die Frage