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,这就是显示的字符串相等的原因。
我有一个密码 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,这就是显示的字符串相等的原因。