gpt4 book ai didi

javascript - CryptoJS PBKDF2 和盐哈希方法不起作用

转载 作者:行者123 更新时间:2023-12-03 03:27:35 28 4
gpt4 key购买 nike

我正在尝试使用 CryptoJS 的 PBKDF2 和盐散列来存储我的密码。这是我对注册中的用户密码进行哈希处理的部分:

var passwordInput = document.getElementById("txtPasswordInput").value;
var salt = CryptoJS.lib.WordArray.random(128/8);
var key512Bits1000Iterations = CryptoJS.PBKDF2(passwordInput, salt, { keySize: 512/32, iterations: 1000 });

console.log(salt.toString());
console.log(key512Bits1000Iterations.toString());

使用 abcd1234 作为密码,我成功地将它们存储到我的数据库中:

Salt: cec16a7e68e0f3e49f729dfd90b0893a
Password: d974b96a494f39aec7f1fa6c495b4783b43e579c070b695...

在我的登录页面,我尝试根据用户输入再次计算哈希以验证凭据:

var passwordInput = document.getElementById("txtPassword").value;
// retrieve from firebase
var password = accountData.password;
var salt = accountData.salt;
var key512Bits1000Iterations = CryptoJS.PBKDF2(passwordInput, salt, { keySize: 512/32, iterations: 1000 });
console.log(salt.toString());
console.log(key512Bits1000Iterations.toString());

if(password != key512Bits1000Iterations){
console.log('wrong');
}else{
console.log('correct');
}

但是,它总是给我返回“错误”。我打印了散列密码,但它们都是不同的。

此外,在我按下注册或登录按钮后,哈希算法实际上需要一段时间才能计算,然后我的浏览器再次恢复响应。算法设计得计算速度很慢吗?有什么想法可以克服这个问题吗?

有什么想法吗?谢谢!

最佳答案

在登录页面,盐需要解析为十六进制。

是的,PBKDF2 的设计速度很慢。您可以通过更少的迭代来加快速度,但会牺牲安全性。

关于javascript - CryptoJS PBKDF2 和盐哈希方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251506/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com