我遇到了以下问题:我尝试将某些字符串str
转换为md5 bytestring hash
。在PHP中我们可以使用md5(str, true)
,但在JS(nodejs express)中,我找不到某种方法来接收相同的结果。我已经包含了npm模块js-md5
,但是这个模块的arrayBuffer
方法返回了另一个结果(差异来自PHP md5(str,true))。
请有人帮助我。
由于
答案 0 :(得分:1)
var md5 = require('md5');
console.log(md5('text'))
答案 1 :(得分:0)
使用CryptoJS模块: NPM link here
做类似的事情:
// 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等其他加密方法也可以完成同样的事情 关于raw_output选项(二进制答案,填充16位)您可以使用简单的函数轻松转换返回的二进制格式的var,请参阅this SO post以了解具体方法。 玩得开心。
答案 2 :(得分:0)
简答:
const crypto = require('crypto');
const buffer = crypto.createHash('md5').update(str).digest();
长答案:您需要使用NodeJS的默认crypto
模块(此处不需要依赖项),其中包含实用程序功能和类。它可以使用同步或异步方法为您创建哈希值(例如MD5或SHA-1哈希值)。名为crypto.createHash(algorithm)
的简短实用程序函数可用于创建具有最少编码的哈希。由page指定:
algorithm
取决于平台上OpenSSL版本支持的可用算法。示例包括'sha256'
,'sha512'
等。在最新版本的OpenSSL中,openssl list-message-digest-algorithms
将显示可用的摘要算法。
现在,这个createHash
函数返回一个Hash
对象,它可以与流一起使用(您可以提供文件,HTTP请求等)或字符串,如您所要求的那样。如果要使用字符串,请使用hash.update(string)
对其进行哈希处理。此方法返回哈希本身,因此您可以使用.digest(encoding)
链接它以生成字符串(如果设置了encoding
)或Buffer
(如果不是)。由于您要求输入字节,我相信Buffer
就是您想要的(Buffer
是Uint8Array
个实例)。