javascript - jsSHA512 来自同一字符串的不同哈希值

标签 javascript hash

我正在使用jsSHA库来哈希密码,但每次运行脚本时,我都会从同一字符串中获得不同的哈希值:

/* Password hash function */
var b = $("form#register"),
    shaObj  = new jsSHA('SHA-512', 'TEXT');

b.on('submit', function (e) {

    e.preventDefault();

    var p = $('#reg_pwd'),
        q = $('#confirm_pwd');

    shaObj.update(p.val());
    var p_hash = shaObj.getHash("HEX");
    //p.val(p_hash);

    shaObj.update(q.val());
    var q_hash = shaObj.getHash("HEX");
    //q.val(q_hash);

    $('p').html('String: ' + p.val() + '<br />Hash: ' + p_hash +
                '<br />String: ' + q.val() + '<br />Hash: ' + q_hash)

    //this.submit()

});

我已经能够在 fiddle 中重现这一点。只需在其中一个字段中输入任何文本,然后多次按“提交”即可查看哈希值的变化。它在 demo page 中工作正常不过。

这是怎么回事?

最佳答案

jsSHA 的 .update() 方法会在之前的任何更新之后附加附加数据,从而有效地将它们连接在一起:

shaObj.update(p.val());
shaObj.update(q.val());
// similar to...
shaObj.update(p.val() + q.val());
<小时/>

要计算每个输入的哈希值,您必须为每个输入创建一个新的 jsSHA() 实例:

var shaObj = new jsSHA('SHA-512', 'TEXT'); // <---
shaObj.update(p.val());
var p_hash = shaObj.getHash("HEX");
//p.val(p_hash);

var shaObj = new jsSHA('SHA-512', 'TEXT'); // <---
shaObj.update(q.val());
var q_hash = shaObj.getHash("HEX");
//q.val(q_hash);

关于javascript - jsSHA512 来自同一字符串的不同哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605769/

相关文章:

ruby-on-rails - 创建一个唯一的哈希

javascript - jQuery 日期和金额计算?

javascript - 尝试了解 Angular 路由概念,但是当尝试重新加载页面时,没有显示任何内容。

javascript - XSL 在 IE 中处理片段

c++ - c++ 哈希函数对密码来说是否相当安全?

java - 如何展平 HashMap?

hash - 哈希任意对象的正确方法

ruby - 在 Ruby 中使用 << 将键/值对附加到散列

javascript - 在 WordPress 表单管理器中一键提交多个表单

javascript - 如何通过 ejs 向 Javascript 传递数组值?