在Javascript中哈希symfony2密码

时间:2015-08-27 18:11:22

标签: javascript symfony sha512

我想像symfony2一样使用密码,但是在javascript中。这是我在Javascript中的代码:

this.hashPassword = function(salt, clearPassword) {

    var digest = "";
    console.log('==== STARTING HASHING PASSWORD ====');
    var salted = null;
    if (!salt || salt == "") {
      salted = clearPassword;
    } else {
      salted = clearPassword + "{" + salt + "}";
    }

    digest = CryptoJS.SHA512(salted);
    for (var i=1; i<5000; i++) {
      digest = CryptoJS.SHA512(digest.toString(CryptoJS.enc.Latin1)+salted);
    }
    digest = digest.toString(CryptoJS.enc.Base64);
    console.log('==== ENDING HASHING PASSWORD ====');
    console.log(digest);
    return digest;
};

我获得的哈希密码在数据库中并不相同,我真的不知道为什么。我在Symfony2中的密码在SHA512中使用盐进行哈希处理,我确定,因为我在PHP中测试代码并且它有效。

你能帮帮我吗?

谢谢

1 个答案:

答案 0 :(得分:0)

根据this answer

SHA1 [..] not made for security [..] grab any implementation of BCrypt 

但有一个解释是,换行可能导致不同的哈希值。在他们的情况下,可以使用Base64.encodeToString(byteData, Base64.NO_WRAP)关闭此功能。