这个 SHA-256 Javascript 代码有什么问题?
What's wrong in this SHA-256 Javascript code?
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”
说明:我想做的是比较散列 passwords.If 输入的密码(安全密码和真实密码)和散列密码(分别为 c1 和 c2)是否相等,它必须显示 'hi'给我。但我发现它总是向我显示 'bye'。
问题:当我比较 c1 和 c2 时,我得到的结果总是 'bye',尽管当我使用警告框显示它们时 c1 和 c2 的值相同。
我对散列有点陌生。非常感谢您的帮助!
来自the docs:
The hash you get back isn't a string yet. It's a WordArray object. When you use a WordArray object in a string context, it's automatically converted to a hex string.
当您比较 JavaScript 中的对象时,您是在测试它们是否是 相同的 对象,而不是它们是否是相同的对象。
由于您创建了两个 WordArray,因此您正在比较两个不同(但可能相同)的对象。
您需要将它们转换为字符串。
if ( (''+c1) == (''+c2) )
或
if ( c1.toString() == c2.toString() )
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”
说明:我想做的是比较散列 passwords.If 输入的密码(安全密码和真实密码)和散列密码(分别为 c1 和 c2)是否相等,它必须显示 'hi'给我。但我发现它总是向我显示 'bye'。
问题:当我比较 c1 和 c2 时,我得到的结果总是 'bye',尽管当我使用警告框显示它们时 c1 和 c2 的值相同。
我对散列有点陌生。非常感谢您的帮助!
来自the docs:
The hash you get back isn't a string yet. It's a WordArray object. When you use a WordArray object in a string context, it's automatically converted to a hex string.
当您比较 JavaScript 中的对象时,您是在测试它们是否是 相同的 对象,而不是它们是否是相同的对象。
由于您创建了两个 WordArray,因此您正在比较两个不同(但可能相同)的对象。
您需要将它们转换为字符串。
if ( (''+c1) == (''+c2) )
或
if ( c1.toString() == c2.toString() )