我在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!
答案 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');