我有一个包含 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');
}
}
带有散列“默认”的屏幕截图
最佳答案
你的哈希不是字符串,而是对象。如果您console.log(hash)
,您会看到这一点。为了从这些哈希值中获取正确的十六进制字符串,请分别调用 hash.toString(CryptoJS.enc.Hex)
和 hashedPass.toString(CryptoJS.enc.Hex)
。
当您在消息元素中显示哈希值时,会隐式调用 toString,这就是显示的字符串相等的原因。
关于javascript - CryptoJS 无法与预哈希数据进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309729/