我正在尝试在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