Javascript nodejsmd5';bytestring';像PHPMD5(str,true)

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')

我遇到了以下问题:我试图通过testringhash将一些字符串
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'))