如何让 PHP 和 Node.js 中的 hash 具有相同的值?

发布于 2024-11-24 19:37:00 字数 304 浏览 5 评论 0原文

在 Node.js 中,我有:

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

在 PHP 中,我有:

md5("AAA");

但是,两者都有不同的值。我怎样才能让它一样?否则,我应该使用什么其他算法使它们相同,以便我可以将其用作签名计算。谢谢。


哦,实际上。我的错误。当我测试它时,有一个错误..它会 md5 相同的东西。

In node.js, I have:

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

In PHP I have:

md5("AAA");

However, both have different value. How can I make it the same? or else, what other algorithm I should use to make them the same, so that I can use it as signature calculation. Thanks.


Oppss.. actually. my mistake. when I test it, there is a bug.. it will md5 the same thing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

躲猫猫 2024-12-01 19:37:00

我过去所做的简单谷歌搜索给了我 => 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 扩展

你也可以看看 https://github.com/brainfucker/hashlib 它使用 C 实现这会更快。

Simple googling I did in the past gave me => http://japhr.blogspot.com/2010/06/md5-in-nodejs-and-fabjs.html

Node.js

Script:

var crypto = require('crypto');
var hash = crypto.createHash('md5').update('AAA').digest("hex");
console.log(hash);

Output:

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

PHP

Code

<?php
echo md5("AAA");

Output:

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

The output for both PHP and node.js are equal.

C extension

Also you might have look at https://github.com/brainfucker/hashlib which uses C implementation which is going to be faster.

叹倦 2024-12-01 19:37:00

您的代码为我创建了相同的哈希值,您可能在某些时候做错了

Your code creates the same hash value for me, you might doing it wrong at some point

水晶透心 2024-12-01 19:37:00

我在为非 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";

PHP 和 NodeJS 中的结果是不同的,直到我使用 utf8 库。
因此,以下代码对于 PHP 和 NodeJS 都是等效的:

crypto.createHash('md5').update(utf8.encode(non_utf8_str)).digest('hex');

I had the same issue with creating hash for non UTF8 string :

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";

The results in PHP and NodeJS was different until I used utf8 library.
So following code works equivalent for both PHP and NodeJS :

crypto.createHash('md5').update(utf8.encode(non_utf8_str)).digest('hex');
别闹i 2024-12-01 19:37:00
var hash = crypto.createHash('md5').update(password, 'latin1', 'latin1').digest('hex');

这对我有用。尝试不同的编码:“utf8”、“ascii”或“latin1”。

var hash = crypto.createHash('md5').update(password, 'latin1', 'latin1').digest('hex');

This worked for me. Try different encodings: 'utf8', 'ascii', or 'latin1'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文