【问题标题】:Node.js crypto PBKDF2 function returns different values on v8 vs v10Node.js 加密 PBKDF2 函数在 v8 和 v10 上返回不同的值
【发布时间】:2016-10-18 13:43:25
【问题描述】:

这个节点代码sn -p根据节点平台版本返回不同的值。我在运行 Ubuntu 14.04 的 EC2 中有两个相同的实例(节点版本除外)。

"use strict";
var crypto = require("crypto");
crypto.pbkdf2("password", "salt", 1000, 32, function(err, derivedKey) {
if (err) {
console.error(err);
} else {
console.log(new Buffer(derivedKey).toString('base64'));
}
});    

在节点 v0.8.28 上,控制台值为:

bsKIwr7Ci8KtfsKuwp3CnhDCqgYSJANPw61Iw5A/w4vCrcKWwotWAGfChFPCnVIU

在节点 v0.10.5 上,值为:

boi+i61+rp2eEKoGEiQDT+1I0D/LrZaLVgBnhFOdUhQ=

这是一个大问题,因为我们正在升级应用程序的节点版本,密码无法正确解密。

谢谢!

【问题讨论】:

    标签: javascript node.js algorithm hash salt


    【解决方案1】:

    在寻求帮助后如何找到答案很奇怪。

    通过像这样将编码类型传递给 Buffer 函数:

    console.log(new Buffer(derivedKey,'binary').toString('base64'));
    

    ...我可以得到相同的哈希值。

    原来默认类型已从二进制更改为 utf8,所以现在需要指定“二进制”。 https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback(见底部注释)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2015-08-27
      • 2016-08-14
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多