Javascript nodejsmd5';bytestring';像PHPMD5(str,true)
我遇到了以下问题:我试图通过testringhash将一些字符串Javascript nodejsmd5';bytestring';像PHPMD5(str,true),javascript,php,node.js,hash,md5,Javascript,Php,Node.js,Hash,Md5,我遇到了以下问题:我试图通过testringhash将一些字符串str转换为md5。在PHP中,我们可以使用md5(str,true),但在JS(nodejs-express)中,我找不到获得相同结果的方法。我已经包括了npm模块js-md5,但是这个模块的arrayBuffer方法返回另一个结果(不同于PHP md5(str,true)) 谁能帮帮我吗 感谢使用CryptoJS模块: 然后做一些类似的事情: // Requires var crypto = require('crypto')
str
转换为md5。在PHP中,我们可以使用md5(str,true)
,但在JS(nodejs-express)中,我找不到获得相同结果的方法。我已经包括了npm模块js-md5
,但是这个模块的arrayBuffer
方法返回另一个结果(不同于PHP md5(str,true))
谁能帮帮我吗
感谢使用CryptoJS模块:
然后做一些类似的事情:
// 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_输出选项(二进制应答,填充在16位上),您可以使用一个简单的函数轻松地将返回的var转换为二进制格式,请参见了解如何转换。
玩得开心 简短回答:
const crypto = require('crypto');
const buffer = crypto.createHash('md5').update(str).digest();
详细回答:您需要使用NodeJS的默认加密模块(此处不需要依赖项),该模块包含实用函数和类。它能够使用同步或异步方法为您创建哈希(例如MD5或SHA-1哈希)。名为crypto.createHash(algorithm)
的短实用函数有助于以最少的编码创建哈希。具体如下:
算法取决于平台上OpenSSL版本支持的可用算法。示例有'sha256'
,'sha512'
等。在OpenSSL的最新版本中,OpenSSL列表消息摘要算法将显示可用的摘要算法
现在,这个createHash
函数返回一个Hash
对象,该对象可以根据您的要求与流(您可以向其提供文件、HTTP请求等)或字符串一起使用。如果要使用字符串,请使用hash.update(string)
对其进行散列。此方法返回散列本身,因此可以将其与.digest(encoding)
链接以生成字符串(如果设置了编码)或缓冲区(如果未设置)。既然你要的是字节,我相信一个缓冲区就是你想要的(Buffer
s是Uint8Array
实例)。你说得绝对正确,我匆忙写了这篇文章,忘了它。请允许我编辑我的答案。由于你的答案现在比以前的好得多,我删除了以前的评论。Thx;)。附加信息:不要尝试两次消化散列,否则会出错。哈希只能摘要一次。例如,如果比较两个密码,请注意对象的类型(如果它来自输入,则可能是字符串,如果它来自数据库的resultset之类的对象,则可能是对象属性),这就是我创建“equals”方法的原因(受Java中.equals()的启发)。
var md5 = require('md5');
console.log(md5('text'))