NodeJS md5'bytestring'就像PHP md5(str,true)

时间:2016-07-29 09:56:11

标签: javascript php node.js hash md5

我遇到了以下问题:我尝试将某些字符串str转换为md5 bytestring hash。在PHP中我们可以使用md5(str, true),但在JS(nodejs express)中,我找不到某种方法来接收相同的结果。我已经包含了npm模块js-md5,但是这个模块的arrayBuffer方法返回了另一个结果(差异来自PHP md5(str,true))。

请有人帮助我。

由于

3 个答案:

答案 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就是您想要的(BufferUint8Array个实例)。