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

问题描述 投票:2回答:1
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

[EXPLANATION:我想做的是比较哈希密码。如果输入的密码(安全密码和真实密码)已经被哈希密码(分别为c1和c2)相等,则它必须向我显示'hi'。但是我发现它总是向我显示“再见”。

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

我对哈希有点陌生。一个小小的帮助将不胜感激!

javascript hash passwords sha cryptojs
1个回答
2
投票

来自the docs

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

在JavaScript中比较对象时,您正在测试以查看它们是否为same对象,而不是它们是否相同。

由于创建了两个WordArray,所以您正在比较两个不同(但可能相同)的对象。

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

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

if ( c1.toString() == c2.toString() )
© www.soinside.com 2019 - 2024. All rights reserved.