NodeJS md5'bytestring'像PHP md5(str,true)

我遇到以下问题:我尝试将一些stringstr转换为md5 bytestring hashmd5 bytestring hash 。 在PHP中,我们可以使用md5(str, true) ,但是在JS(nodejs express)中我找不到某种方法来获得相同的结果。 我已经包含了npm模块js-md5 ,但是这个模块的arrayBuffer方法返回了另一个结果(不同于PHP md5(str,true))。

请有人帮助我吗?

谢谢

在这里使用CryptoJS模块: NPM链接

并做一些事情:

 // Requires var crypto = require('crypto'); // Constructor function Crypto() { this.hash; } // Hash method Crypto.prototype.encode = function(data) { this.hash = crypto.createHash('md5').update(data); var result = this.hash.digest('hex'); return result; }; // Comparison method (return true if === else false) Crypto.prototype.equals = function(data, model) { var bool = false; var data = data.toUpperCase(); var model = String(model).toUpperCase(); if (data == model){ bool = true; } else { bool = false; } return bool; }; // Exports module.exports = Crypto; 

然后在代码中实例化这个“工具”对象并使用方法。
就像馅饼一样容易,同样的事情可以用AES,SHA256等其他encryption方法来完成。
关于raw_output选项(二进制答案,用16位填充),你可以用一个简单的函数很容易地将返回的二进制格式的variables转换为二进制格式。 玩的开心。

简短的回答:

 const crypto = require('crypto'); const buffer = crypto.createHash('md5').update(str).digest(); 

长的答案:你需要使用NodeJS的默认crypto模块(这里不需要依赖),它包含了实用函数和类。 它能够使用同步或asynchronous方法为您创build散列(例如MD5或SHA-1散列)。 一个名为crypto.createHash(algorithm)短实用程序函数可以用最less的编码创build一个散列。 正如文件所述 :

algorithm取决于平台上OpenSSL版本支持的可用algorithm。 例如'sha256''sha512'等。在最近的OpenSSL版本中, openssl list-message-digest-algorithms将显示可用的摘要algorithm。

现在,这个createHash函数返回一个Hash对象,可以像stream一样使用它(你可以给它一个文件,HTTP请求等等)或者一个string。 如果你想使用一个string,使用hash.update(string)来散列它。 这个方法返回哈希本身,所以你可以用.digest(encoding)链接它来生成一个string(如果设置了encoding )或者一个Buffer (如果不是)。 既然你问的字节,我相信一个Buffer是你想要的( BufferUint8Array实例)。