crypto.createHash sha512,带有hexDigest输入类型

时间:2011-10-31 16:37:41

标签: javascript node.js cryptography hex sha512

我想在http://jssha.sourceforge.net/

获得相同的结果

,其中

我有问题'测试'这个词:

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

在使用input type变量和SHA-512的值选择hex为HEX时,在jssha上得到以下结果:

6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472

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

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

输出:

9ad6d9053c6c420fe61ec2fffd094e3a325bc71708e18232fd764a5eb30315e38464e620ef0b55b92fbf6c809838652a72d9412b0398b28d61ca432962451de2

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

由于

1 个答案:

答案 0 :(得分:4)

如果你使用非常标准的utf8,那么十六进制中的“test”是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')