【问题标题】:Decrypt Password Created by crypto.pbkdf2 Object解密由 crypto.pbkdf2 对象创建的密码
【发布时间】:2014-07-03 21:53:51
【问题描述】:

我在 javascript 中有以下代码,在 NodeJs 上运行:

encryptPassword: function(password) {
    if (!password || !this.salt) return '';
    var salt = new Buffer(this.salt, 'base64');
    return crypto.pbkdf2Sync(password, salt, 10000, 64).toString('base64');
}

如何实现解密功能? 它可以是java或javascript。

谢谢!

【问题讨论】:

    标签: javascript node.js encryption


    【解决方案1】:

    PBKDF2 是一种单向散列算法。无法解密生成的哈希。你可以阅读更多关于这个here的信息。

    单向哈希执行一堆数学运算 将输入转换为(大部分)唯一的输出,称为摘要。 因为这些操作是一种方式,所以你不能“解密”输出—— 您不能将摘要转换为原始输入。

    如果您想使用 PBKDF2 来存储和比较密码,您可能会对 pbkdf2 库感兴趣。它使密码的生成和比较变得容易:

    var pbkdf2 = require('pbkdf2');
    var p = 'password';
    var s = pbkdf2.generateSaltSync(32);
    var pwd = pbkdf2.hashSync(p, s, 1, 20, 'sha256');
    var bool = pbkdf2.compareSync(pwd, p, s, 1, 20, 'sha256');
    

    【讨论】:

    • 谢谢。没有您的代码,比较密码非常容易。我们可以只比较字符串。据我了解,在相同的两个字符串上使用我上面的函数将返回相同的哈希密码。
    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多