【问题标题】:Different result in NodeJS calculating MD5 hash using crypoNode JS 中的不同结果使用加密计算 MD5 哈希
【发布时间】:2020-02-25 21:54:22
【问题描述】:

我正在尝试使用加密从 NodeJS 中的数字获取 MD5,但我得到的返回的哈希值不同,然后我从可以计算 has 的站点获取。

根据http://onlinemd5.com/,1092000 的 MD5 为 AF118C8D2A0D27A1D49582FDF6339B7C。

当我尝试在 NodeJS 中计算该数字的哈希值时,它给出了不同的结果 (ac4d61a5b76c96b00235a124dfd1bfd1)。我的代码:

const crypto = require('crypto');
const num = 1092000;
const hash = crypto.createHash('md5').update(toString(num)).digest('hex');
console.log(hash);

【问题讨论】:

    标签: node.js hash md5


    【解决方案1】:

    如果你把它转换成一个字符串,它可以正常工作:

    const hash = crypto.createHash('md5').update(String(num)).digest('hex'); // or num.toString()
    

    看看区别:

    toString(num) = [object Undefined]
    (1092000).toString() = "1092000"
    

    如果您默认在 Node 环境中 console.log(this),您将看到它是:

    this = {} typeof = 'object'
    

    Node env 中的this 指向module.exports,因此您在Object.prototype 上调用此toString,这不是对module.exports 以外的任何内容进行字符串转换的正确做法。

    【讨论】:

    • 那个奇怪的 toString 出现了谷歌搜索如何在 JavaScript 中将数字转换为字符串。它实际上没有抛出任何错误,所以我认为这是应该完成的方式。你的回答解决了问题。谢谢(需要等待 7 分钟才能接受它作为答案)。
    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2023-04-05
    • 2022-09-23
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多