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

yon*_*tan 2 javascript java encryption node.js

我在jjavascript中有以下代码,在NodeJ上运行:

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

如何实现解密功能?它可以在java或javascript中.

谢谢!

Ger*_*osi 7

PBKDF2是单向散列算法.无法解密生成的哈希值.你可以在这里阅读更多相关信息.

单向散列执行一系列数学运算,将输入转换为(大部分)唯一输出,称为摘要.由于这些操作是单向操作,因此无法"解密"输出 - 您无法将摘要转换为原始输入.

如果您想使用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');
Run Code Online (Sandbox Code Playgroud)