NodeJS md5'bytestring'像PHP md5(str,true)
我遇到以下问题:我尝试将一些stringstr
转换为md5 bytestring hash
串md5 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
是你想要的( Buffer
是Uint8Array
实例)。