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

CryptoJS cannot compare with pre-hashed data

我有一个密码 table,其中包含 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');
    }
}

经过哈希处理的屏幕截图 'default'

您的散列不是字符串,而是对象。如果你 console.log(hash),你会看到这个。为了从这些散列中得到正确的十六进制字符串,分别调用 hash.toString(CryptoJS.enc.Hex)hashedPass.toString(CryptoJS.enc.Hex)

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

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