繁体   English   中英

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

[英]Different md5 hash results in Java and JavaScript

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

Java中 Arrays.toString(MessageDigest.getInstance("MD5").digest("test".getBytes()));

退货

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

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

退货

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

使用crypto 1.0.1有人可以向我解释吗? 我已经使用了不同的编码,但是并没有影响结果。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM