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

标签 javascript hash passwords sha cryptojs

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 时,它们的值是相同的。

我对哈希有点陌生。如果您能提供帮助,我们将不胜感激!

最佳答案

来自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() )

关于javascript - 这段 SHA-256 Javascript 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497331/

相关文章:

javascript - 使用 Google 可视化如何在特定行上触发选择事件?

javascript - history.pushState 后转发按钮不起作用

php - PHP crypt() 的输出长度是多少?

html - 如何使 autocomplete=off 在 Firefox 的登录/密码字段中工作

ruby-on-rails - Ruby on Rails - 设计注册空白密码

c - C/C++ 中检查密码强度的算法

javascript - 尽管设置了@match 和@include 设置,Chrome 用户脚本仍会在所有页面上触发

javascript - 如何在两个客户端上从服务器接收数据

php - openssl_encrypt 返回空字符串

hash - 如何使用 CDN 和负载均衡器进行文件版本控制?