解密由crypto.pbkdf2对象创build的密码

我在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'); } 

我怎样才能实现解密function? 它可以在Java或JavaScript中。

谢谢!

PBKDF2是一种单向哈希algorithm。 解密生成的散列是不可能的。 你可以在这里阅读更多。

单向散列执行一堆math运算,将input转换为(大部分)唯一输出,称为摘要。 由于这些操作是一种方式,因此无法“解密”输出,因此无法将摘要转换为原始input。

如果您想使用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');