我使用crypto.createDecipheriv
时遇到了一个非常奇怪的错误定义以下代码时:
var decipher = crypto.createDecipheriv('aes-256-cbc', '3dc837d877144001c1291fdda417903d9130aeac', '1234567890123456');
并且请求到达此行我立即收到错误,导致我的应用程序崩溃:
Error: Invalid key length
at Error (native)
at new Decipheriv (crypto.js:282:16)
at Object.Decipheriv (crypto.js:279:12)
是否有人知道造成这种情况的原因?
感谢。
答案 0 :(得分:6)
您的密钥长度太短。 aes-256-cbc
需要256位密钥,即32个字节。但是,您提供的(十六进制)密钥只有20个字节。
此外,您需要使用new Buffer('myhexkey', 'hex')
作为关键参数,以便解码十六进制字节。