2017-09-09 6 views
0

J'essaye de traduire le code existant de java en JavaScript (node.js pour être spécifique). Création d'un hachage md5 de la même chaîne dans les deux langues conduit aux différents résultats suivants:Différents résultats de hachage md5 en Java et JavaScript

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

retours

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

tandis que dans JScrypto.createHash("md5").update("test", "ascii").digest();

retours

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

utilisant Crypto 1.0.1 Quelqu'un peut-il me l'expliquer? J'ai déjà joué avec différents encodages, mais cela n'a pas affecté le résultat.

Répondre

2

Vous utilisez des octets signés en Java. C'est en fait la même chose. Je voterais pour la version non signée, mais si vous devez être compatible avec la version Java juste arr.map(function(e) {return e >= 128 ? e - 256 : e})

+0

eh bien, cela a du sens, car en utilisant réellement un buffer node.js, la fonction de mappage fournie ne change pas ce comportement. Jamais le moins, merci pour votre aide! – Crass

0

Les deux hachages sont les mêmes. Depuis les types non signés/signés, vous voyez des nombres différents mais ils ont les mêmes valeurs. Essayez de convertir les valeurs en non signées.