2017-09-09 2 views
0

Ich versuche, vorhandenen Code aus Java in JavaScript (node.js um genau zu sein) zu übersetzen. eine MD5-Hash des gleichen String Erstellen in beiden Sprachen führt zu folgenden unterschiedlichen Ergebnissen:Verschiedene MD5-Hash-Ergebnisse in Java und JavaScript

In JavaArrays.toString(MessageDigest.getInstance("MD5").digest("test".getBytes()));

kehrt

[9, -113, 107, -51, 70 , 33, -45, 115, -54, -34, 78, -125, 38, 39, -76, -10]

während in JScrypto.createHash("md5").update("test", "ascii").digest();

kehrt

[9, 143, 107, 205, 70, 33, 211, 115, ...]

jemand Krypto 1.0.1 mit Kann mir dies erklären? Ich habe schon mit verschiedenen Codierungen herumgespielt, aber das hat das Ergebnis nicht beeinflusst.

Antwort

2

Sie verwenden signierte Bytes in Java. Es ist eigentlich das Gleiche. Ich würde für die unsignierte Version stimmen, aber wenn Sie mit der Java-Version nur kompatibel sein müssen arr.map(function(e) {return e >= 128 ? e - 256 : e})

+0

oh gut, das macht Sinn, weil im im Grunde mit einem node.js Buffer, die bereitgestellten Mapping-Funktion dieses Verhalten nicht ändert. Trotzdem, vielen Dank für Ihre Hilfe! – Crass

0

Beide Hashes sind gleich. Da die nicht signierten/signierten Typen unterschiedliche Zahlen anzeigen, haben sie dieselben Werte. Versuchen Sie, Werte auf unsigned zu setzen.

Verwandte Themen