如何在PHP和Node.js中使用哈希具有相同的值?

时间:2011-07-19 22:56:11

标签: php hash node.js md5 signature

在node.js中,我有:

var h = crypto.createHash("md5");   // md5
h.update("AAA");
h.digest("hex");

在PHP中我有:

md5("AAA");

然而,两者都有不同的价值。我怎么能这样做?或者,我应该使用什么其他算法使它们相同,以便我可以将它用作签名计算。感谢。


实际上是对不起..我的错。当我测试它时,有一个bug ..它将md5相同的东西。

4 个答案:

答案 0 :(得分:10)

我过去做的简单的谷歌搜索给了我=> http://japhr.blogspot.com/2010/06/md5-in-nodejs-and-fabjs.html

Node.js的

<强>脚本:

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

<强>代码

<?php
echo md5("AAA");

<强>输出:

alfred@alfred-laptop:~/node/hash$ php md5.php 
e1faffb3e614e6c2fba74296962386b7

PHP和node.js的输出相等。

C扩展

此外,您可能会查看使用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”。