javascript - CryptoJS 无法与预哈希数据进行比较

标签 javascript jquery hash sha1

我有一个包含 SHA1 哈希数据的密码表。所以我想用 CryptoJS 进行验证输入。它出错了..但是当我尝试显示它时,结果匹配..我是否编写了错误的函数?

这是我的代码

function checkCurPass()
{
    var hash = CryptoJS.SHA1("<?php echo $selected->password ?>");
    var currentPass = document.getElementById('users-profile-currentpassword');
    var hashedPass = CryptoJS.SHA1(currentPass.value);

    var message = document.getElementById('mesas');
    message.innerHTML = hashedPass;

    if (hashedPass == hash) 
    {
        $('#currentPassForm').addClass('has-success').removeClass('has-error');
    }
    else
    {
        $('#currentPassForm').addClass('has-error').removeClass('has-success');
    }
}

带有散列“默认”的屏幕截图

enter image description here

最佳答案

你的哈希不是字符串,而是对象。如果您console.log(hash),您会看到这一点。为了从这些哈希值中获取正确的十六进制字符串,请分别调用 hash.toString(CryptoJS.enc.Hex)hashedPass.toString(CryptoJS.enc.Hex)

当您在消息元素中显示哈希值时,会隐式调用 toString,这就是显示的字符串相等的原因。

参见http://codepen.io/anon/pen/BNxjGm

关于javascript - CryptoJS 无法与预哈希数据进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309729/

相关文章:

jquery - 如何在 fancybox V2 中为 iframe 设置不同的高度/宽度?

javascript - 为什么这个简单的 jQuery block 不起作用?

javascript - 使用 Jquery 的没有插件的顶部幻灯片菜单

ruby - 如何将两个散列合并为一个数组散列?

python - 将 linux sha512 影子转换为十六进制

javascript - 需要 Node JS 中间件功能

javascript - 过滤 dxdatagrid 的查找列值

javascript - 防止大型菜单项在悬停时自动隐藏

javascript - Bootstrap 选项卡中的关闭按钮 - 不将 <button> 放入 <a> 中?

javascript - AJAX SEO(重新 : faceted search w/URL hashed state )