【问题标题】:Different md5 hash results in Java and JavaScriptJava 和 JavaScript 中不同的 md5 哈希结果
【发布时间】:2023-04-05 14:55:02
【问题描述】:

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

JavaArrays.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 谁能给我解释一下?我已经玩过不同的编码,但并不影响结果。

【问题讨论】:

    标签: javascript java hash md5 digest


    【解决方案1】:

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

    【讨论】:

    • 哦,这确实有道理,因为我实际上使用的是 node.js 缓冲区,提供的映射函数不会改变这种行为。无论如何,感谢您的帮助!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 2017-01-24
      • 2021-05-04
      • 1970-01-01
      • 2014-05-19
      • 2020-12-08
      相关资源
      最近更新 更多