这个SHA-256 Javascript代码有什么问题?

时间:2015-02-13 10:21:58

标签: javascript hash passwords password-protection sha

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),则必须显示&#39 ;喜'对我来说。但我发现它显示了“再见”。对我来说总是如此。

问题:当我比较c1和c2时,我得到的结果总是' bye',但是当我使用警告框显示它们时,c1和c2的值是相同的。

我对哈希有点新意。非常感谢帮助,我们非常感激!

1 个答案:

答案 0 :(得分:2)

来自the docs

  

你得到的哈希值还不是字符串。它是一个WordArray对象。在字符串上下文中使用WordArray对象时,它会自动转换为十六进制字符串。

当您比较JavaScript中的对象时,您正在测试它们是否是相同的对象,而不是它们是否是相同的对象。

由于您创建了两个WordArrays,因此您要比较两个不同(但可能相同)的对象。

您需要将它们转换为字符串。

if ( (''+c1) == (''+c2) ) 

if ( c1.toString() == c2.toString() )