在node.js中,我有:
var h = crypto.createHash("md5"); // md5
h.update("AAA");
h.digest("hex");
在PHP中我有:
md5("AAA");
然而,两者都有不同的价值。我怎么能这样做?或者,我应该使用什么其他算法使它们相同,以便我可以将它用作签名计算。感谢。
答案 0 :(得分:10)
我过去做的简单的谷歌搜索给了我=> http://japhr.blogspot.com/2010/06/md5-in-nodejs-and-fabjs.html
<强>脚本:强>
var crypto = require('crypto');
var hash = crypto.createHash('md5').update('AAA').digest("hex");
console.log(hash);
<强>输出:强>
alfred@alfred-laptop:~/node/hash$ node hash.js
e1faffb3e614e6c2fba74296962386b7
<强>代码强>
<?php
echo md5("AAA");
<强>输出:强>
alfred@alfred-laptop:~/node/hash$ php md5.php
e1faffb3e614e6c2fba74296962386b7
PHP和node.js的输出相等。
此外,您可能会查看使用C实现的https://github.com/brainfucker/hashlib,这将更快。
答案 1 :(得分:1)
您的代码为我创建了相同的哈希值,您可能在某些时候做错了
答案 2 :(得分:0)
我在为非UTF8字符串创建哈希时遇到了同样的问题:
var non_utf8_str = "test_merchant;www.market.ua;DH783023;1415379863;1547.36;UAH;Процессор
Intel Core i5-4670 3.4GHz;Память Kingston DDR3-1600 4096MB
PC3-12800;1;1;1000;547.36";
在使用utf8库之前,PHP和NodeJS的结果不同。 所以下面的代码对PHP和NodeJS都是等效的:
crypto.createHash('md5').update(utf8.encode(non_utf8_str)).digest('hex');
答案 3 :(得分:0)
var hash = crypto.createHash('md5').update(password, 'latin1', 'latin1').digest('hex');
这对我有用。尝试不同的编码:“ utf8”,“ ascii”或“ latin1”。