我如何在nodejs服务器中检查带有数字类型的PHP MD5哈希

How can i check a PHP MD5 hash with number type in nodejs server

我正在尝试在 NodeJS 中生成一个 MD5 哈希码,并将其与 php 生成的数字类型为 ex: md5(10) 的 MD5 哈希码进行比较。 NodeJS 似乎没有办法生成仅具有数字类型的 MD5 哈希 - 仅支持 String、Buffer、Array 或 Uint8Array 类型。

我尝试将数字存储到缓冲区或二进制列表中,但我没有设法匹配 php 生成的哈希值:

var buffer = new Buffer(16);
buffer.writeDoubleBE(10)
return crypto.createHash("md5").update(buffer).digest("hex");

// result : c6df1eeac30ad1fab5b50994e09033fb
// PHP-generated hash : md5(10) = d3d9446802a44259755d38e6d163e820

php 中的 MD5 究竟与数据类型有什么关系?
我应该使用哪种数据形式来获得相同的结果?

PHP中的md5函数计算字符串的哈希值,所以在你的例子中它实际上是在计算“10”的哈希值。

在 Node.js 中执行此操作应该非常简单:

const dataToHash = Buffer.from(String(10), "utf-8");
const hash = crypto.createHash("md5").update(dataToHash).digest("hex");
console.log("Hash:", hash);

我们在 Node.js 和 PHP 中得到相同的结果,例如

Hash: d3d9446802a44259755d38e6d163e820