【发布时间】:2015-04-14 08:39:56
【问题描述】:
var secure;
var authentic;
secure = prompt("Enter password","");
alert(secure);
var c1 = CryptoJS.SHA256(secure);
alert(c1);
authentic = prompt("Enter password","");
alert(authentic);
var c2=CryptoJS.SHA256(authentic);
alert(c2);
if(c1==c2)
{
alert("hi");
}
else
{
alert("bye");
}
我使用脚本“http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js”
解释:我想做的是比较哈希密码。如果输入的密码(安全和真实)都经过哈希处理(分别为 c1 和 c2)相等,它必须向我显示“hi” .但我发现它总是向我显示“再见”。
问题:当我比较 c1 和 c2 时,我得到的结果总是“再见”,尽管当我使用警告框显示 c1 和 c2 时它们的值是相同的。
我对散列有点陌生。非常感谢您的帮助!
【问题讨论】:
-
你的比较不好,你需要一个'时间常数'字符串比较来防止定时攻击
-
@RichieFrame 很难说,因为整件事毫无意义。 Unsalted SHA-2,客户端对比,我都不知道从何说起……
-
使用适当的缩进。
-
我正在尝试将数据存储在客户的网络浏览器中,所以以后如果他们想访问它,他们必须提供密码!
-
如果您使用密码生成加密密钥,则需要使用基于密码的密钥派生函数,而不是哈希,此时您不会将密钥与已知密钥进行比较,你用它来尝试解密
标签: javascript hash passwords sha cryptojs