不同的 md5 哈希结果在 Java 和 JavaScript 中



我正在尝试将现有代码从java转换为JavaScript(node.js具体来说)。在两种语言中创建相同字符串的 md5 哈希会导致以下不同的结果:

爪哇Arrays.toString(MessageDigest.getInstance("MD5").digest("test".getBytes()));

返回

[9, -113, 107, -51, 70,

33, -45, 115, -54, -34, 78, -125, 38, 39, -76, -10]

而在JScrypto.createHash("md5").update("test", "ascii").digest();

返回

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

使用加密 1.0.1 谁能向我解释一下?我已经尝试了不同的编码,但这并没有影响结果。

你在 Java 中使用有符号字节。 其实是一样的。 我会投票支持未签名的版本,但如果您必须与 Java 版本兼容,只需arr.map(function(e) {return e >= 128 ? e - 256 : e})

两个哈希是相同的。由于无符号/有符号类型,您会看到不同的数字,但它们具有相同的值。尝试将值强制转换为无符号。

最新更新