Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有hexDigest输入类型的cryto.createHash sha512_Javascript_Node.js_Cryptography_Hex_Sha512 - Fatal编程技术网

Javascript 具有hexDigest输入类型的cryto.createHash sha512

Javascript 具有hexDigest输入类型的cryto.createHash sha512,javascript,node.js,cryptography,hex,sha512,Javascript,Node.js,Cryptography,Hex,Sha512,我试图得到和我在大学时得到的一样的结果 在哪里 我对“测试”一词有疑问: var word = 'testing'; var hex = toHex(word); // '740065007300740069006e006700'; 在jssha上,当选择input type作为十六进制,并使用HEX变量和SHA-512的值时,我得到以下结果: 6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9

我试图得到和我在大学时得到的一样的结果

在哪里

我对“测试”一词有疑问:

var word = 'testing';
var hex = toHex(word); // '740065007300740069006e006700';
在jssha上,当选择
input type
作为十六进制,并使用
HEX
变量和SHA-512的值时,我得到以下结果:

6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472
虽然我不能达到同样的结果

产出:

9ad6d9053c6c420fe61ec2fffd094e3a325bc71708e18232fd764a5eb30315e38464e620ef0b55b92fbf6c809838652a72d9412b0398b28d61ca432962451de2
所以我想知道如何才能得到与使用加密模块相同的结果

谢谢

“测试”在十六进制是74657374696e67,如果你使用utf8,这是非常标准的。toHex方法返回的值假定为utf16

对于这个散列,网站上说:

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

require('crypto').createHash('sha512').update(
  new Buffer("74657374696e67", "hex")
).digest('hex')
节点提供相同的散列。哦,这也给了你同样的哈希:

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

谢谢@thejh,似乎
新的缓冲区(“74657374696e67”,“hex”)
方法为我返回
未知编码。还有,有没有办法让它使用utf-16而不是utf-8。很抱歉,我想我被这个编码卡住了,因为它来自外部web服务。@ludicco:当然,你可以用utf16十六进制字符串做同样的事情。“未知编码”是因为您使用的是旧版本的node,使用0.5.10,并在可用时更改为0.6.0。再次感谢@thejh,唯一的问题是此实例正在heroku上运行,恐怕他们现在只支持0.47?在这种情况下,我不确定你提到的方法是否可行?如果您对我如何完成这项工作有任何想法,我们将不胜感激;)不知道,你可能想在freenode.net上询问heroku。作为一种解决方法,您可以在文件顶部使用Buffer.fromHex from.Do
require(“buffertools”)
,并将
新缓冲区(“74657374696e67”,“hex”)
替换为
Buffer.fromHex(“74657374696e67”)
require('crypto').createHash('sha512').update("testing").digest('hex')