gpt4 book ai didi

node.js - 升级到 NodeJS 6 后 key 长度无效

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:16 24 4
gpt4 key购买 nike

以下用于加密和解密对我们的支付网关服务的请求的代码与 Node Js 5.7.0 一起正常工作

function Encrypt(plainText, workingKey) {
var m = crypto.createHash('md5');
m.update(workingKey);
var key = m.digest('binary');
var iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
var encoded = cipher.update(plainText, 'utf8', 'hex');
encoded += cipher.final('hex');
return encoded;
};


function Decrypt(encText, workingKey) {
var m = crypto.createHash('md5');
m.update(workingKey)
var key = m.digest('binary');
var iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
var decoded = decipher.update(encText, 'hex', 'utf8');
decoded += decipher.final('utf8');
return decoded;
};

但是在升级到 NodeJS 6.0(也尝试过 6.1)后,我们收到以下错误。

Debug: internal, implementation, error
Error: Uncaught error: Invalid key length
at Error (native)
at new Cipheriv (crypto.js:184:16)
at Object.Cipheriv (crypto.js:182:12)

我们的 key 长度一直是 16 个字符(即 128 位),并且在升级前有效。为什么现在会出现这个问题?

最佳答案

我在这里发布答案,希望它能对某人有所帮助。

问题似乎是由于对 key 使用“二进制”摘要引起的。解决方案是简单地调用摘要函数并将 key 存储为缓冲区。

固定代码读作

function Encrypt(plainText, workingKey) {
var m = crypto.createHash('md5');
m.update(workingKey);
var key = m.digest();
var iv = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f';
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
var encoded = cipher.update(plainText, 'utf8', 'hex');
encoded += cipher.final('hex');
return encoded;
};

感谢@Artjom-b 的回答。

关于node.js - 升级到 NodeJS 6 后 key 长度无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com