解密密码由crypto.pbkdf2对象创建

时间:2014-07-03 21:53:51

标签: java javascript node.js encryption

我在jjavascript中运行以下代码,在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。

THX!

1 个答案:

答案 0 :(得分:7)

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