【问题标题】:cryto.createHash sha512 with hexDigest input type具有 hexDigest 输入类型的 crypto.createHash sha512
【发布时间】:2011-11-01 00:53:41
【问题描述】:

我正在尝试获得与http://jssha.sourceforge.net/ 相同的结果

在哪里

我对“测试”这个词有疑问:

var word = 'testing';
var hex = toHex(word); // '740065007300740069006e006700';

在选择 input type作为 hex variable和sha-512的值时,在jssha上,我得到以下结果:

6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472

虽然我无法使用nodejs crypto module 获得相同的结果。

require('crypto').createHash('sha512').update(hex).digest('hex')

输出:

9ad6d9053c6c420fe61ec2fffd094e3a325bc71708e18232fd764a5eb30315e38464e620ef0b55b92fbf6c809838652a72d9412b0398b28d61ca432962451de2

所以我想知道如何使用加密模块获得与jssha 相同的结果?

谢谢

【问题讨论】:

    标签: javascript node.js cryptography hex sha512


    【解决方案1】:

    如果您使用非常标准的 utf8,则十六进制的“测试”为 74657374696e67。您的 toHex 方法返回的内容假定为 utf16。

    对于那个哈希,网站说:

    521b9ccefbcd14d179e7a1bb877752870a6d620938b28a66a107eac6e6805b9d0989f45b5730508041aa5e710847d439ea74cd312c9355f1f2dae08d40e41d50
    

    在 node.js 中执行此操作以散列十六进制字符串:

    require('crypto').createHash('sha512').update(
      new Buffer("74657374696e67", "hex")
    ).digest('hex')
    

    Node 为您提供相同的哈希值。哦,这也会给你同样的哈希值:

    require('crypto').createHash('sha512').update("testing").digest('hex')
    

    【讨论】:

    • 感谢@thejh,看来new Buffer("74657374696e67", "hex") 方法为我返回了Unknown encoding。另外,有没有办法让它使用 utf-16 而不是 8。对不起,我想我被这个编码困住了,因为它来自外部 Web 服务。
    • @ludicco:当然,您可以对 utf16 十六进制字符串执行相同操作。 “未知编码”是因为您使用的是旧版本的节点,使用 0.5.10 并在可用时更改为 0.6.0。
    • 再次感谢@thejh,唯一的问题是这个实例在heroku上运行,恐怕他们现在只支持0.47?在这种情况下,我不确定您提到的方法是否可行?如果您对我如何完成这项工作有任何想法,我们将不胜感激;)
    • 不知道,您可能想在 freenode.net 上的 #heroku 中提问。作为一种解决方法,您可以使用来自 github.com/bnoordhuis/node-buffertools 的 Buffer.fromHex。
    • 在文件顶部执行 require("buffertools") 并将 new Buffer("74657374696e67", "hex") 替换为 Buffer.fromHex("74657374696e67")
    猜你喜欢
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多