我遇到以下问题:我尝试将一些字符串str
转换为md5 bytestring hash
。在PHP中,我们可以使用md5(str, true)
,但在JS(nodejs express)中,我无法找到某种方式来接收相同的结果。我已经包含npm模块js-md5
,但arrayBuffer
该模块的方法返回另一个结果(不同于PHP md5(str,true))。NodeJS md5'bytestring'like PHP md5(str,true)
请问有人能帮助我。
感谢
我遇到以下问题:我尝试将一些字符串str
转换为md5 bytestring hash
。在PHP中,我们可以使用md5(str, true)
,但在JS(nodejs express)中,我无法找到某种方式来接收相同的结果。我已经包含npm模块js-md5
,但arrayBuffer
该模块的方法返回另一个结果(不同于PHP md5(str,true))。NodeJS md5'bytestring'like PHP md5(str,true)
请问有人能帮助我。
感谢
使用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位),您可以轻松地将返回的二进制格式的变量与一个简单的功能,见this SO post知道如何。 玩得开心。
简短的回答:
const crypto = require('crypto');
const buffer = crypto.createHash('md5').update(str).digest();
龙答:你需要使用的NodeJS的默认crypto
模块(不需要这里的依赖),其中包含效用函数和类。它能够使用同步或异步方法为您创建散列(例如MD5或SHA-1散列)。一个名为crypto.createHash(algorithm)
的简短实用程序函数可用于创建具有最少编码的散列。 As the docs specified:
algorithm
取决于平台上OpenSSL版本支持的可用算法。示例是'sha256'
,'sha512'
等。在最近发布的OpenSSL中,openssl list-message-digest-algorithms
将显示可用的摘要算法。现在
,这createHash
函数返回一个Hash
对象,其可与一个流中使用(可以喂它一个文件,HTTP请求等)或字符串,因为你问。如果您想使用字符串,请使用hash.update(string)
对其进行散列。此方法返回散列本身,因此您可以将其与.digest(encoding)
链接以生成字符串(如果设置了encoding
)或Buffer
(如果不是)。既然你问了字节,我相信Buffer
是你想要的(Buffer
s是Uint8Array
实例)。
你是对的,我写这个很匆忙,忘记了。请让我编辑我的答案。 – Iso
现在你的答案比旧的好多了,我删除了我以前的评论。谢谢 ;)。 附加信息:不要尝试消化散列两次,否则会出现错误。散列只能被摘要一次。例如,如果比较两个密码,请注意对象的类型(如果它来自输入,可能是字符串,但如果它来自像数据库结果集这样的对象,则为对象属性),这就是为什么我创建了“equals “方法(受Java中的.equals()启发)。 – Aethyn