微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

节点加密错误 - 错误的最终块长度

如何解决节点加密错误 - 错误的最终块长度

使用我不理解的 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 举报,一经查实,本站将立刻删除。