gpt4 book ai didi

javascript - crypto.createCipheriv 中的 key 长度无效

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:15 25 4
gpt4 key购买 nike

我在 NodeJS v8.11.0 中使用这段代码生成了一个 base64 编码的 key :

const secret = 'shezhuansauce';
const key = crypto.createHash('sha256').update(String(secret)).digest('base64');
//output is REtgV24bDB7xQYoMuypiBASMEaJbc59nJWChoXbbmsA=

使用 key ,我尝试加密一个字符串:

var tobeEncrypted = 'some secret string';
const iv = crypto.randomBytes(16).toString('hex').slice(0, 16);
const cipher = crypto.createCipheriv('aes-256-ctr', key, iv);
const encrypted = cipher.update(String(tobeEncrypted), 'utf8', 'hex') + cipher.final('hex');
console.log(encrypted);

但是,我收到一个错误:

crypto.js:219
this._handle.initiv(cipher, toBuf(key), toBuf(iv));
^
Error: Invalid key length

key 需要是 base64 字符串,因为我会将它存储在云服务中,它只接收 base64 字符串。

感谢任何帮助。

最佳答案

补充一点: key 长度取决于算法,比如aes192是24字节,aes256是32字节。您需要具有 32 字节(256 位)的 key 长度。因此,如果您将关键行更改为:

let key = crypto.createHash('sha256').update(String(secret)).digest('base64').substr(0, 32);

它会起作用。

关于javascript - crypto.createCipheriv 中的 key 长度无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963160/

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