问题描述
使用我不理解的 crypto
解密响应时出现错误 Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
我正在解密一个类似于 'p6\u001e�s�p>l?a%ޟ�=~m�\u0002D�K(�[<\u0007O�6\u001c�a�[sP�=\u00112\u001d�)n�Ⴓ?
的响应,为简洁起见,我已将其缩短。最终结果应该是一个JSON对象
我的代码如下
const crypto = require('crypto');
const secret = "mysecret";
const algorithm = 'aes-128-cbc';
function decryptAES(message) {
const bytes = Buffer.from(message);
const salt = bytes.slice(bytes.length - 8);
const key = crypto.pbkdf2Sync(secret,salt,10000,16,'sha1');
const iv = bytes.slice(bytes.length - 24,bytes.length - 8);
const data = bytes.slice(0,bytes.length - 24);
const decipher = crypto.createDecipheriv(algorithm,key,iv);
let decrpyted = decipher.update(data,'hex','utf8');
decrpyted = Buffer.concat([decrpyted,decipher.final('utf8')])
console.log(decrpyted.toString());
}
谁能指出我可能做错了什么以及错误消息的含义
更新
通过查看数据是如何加密的,我可以看到他们正在使用 PKCS7Padding
。在我的解密代码中,我没有指定这一点。这可以通过 crypto
完成吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)