因此,我正在使用node crypto library解密由我无法控制的其他软件加密的二进制文件。使用以下代码,我能够成功解密它:
decipher = crypto.createDecipheriv('aes-128-ecb', password, iv);
decrypted = decipher.update(body, 'binary', 'utf8');
很好,但是从我解密的文本的末尾开始,大约有11个字符被 chop 了。这很奇怪,因为它有超过11200个纯文本字符。现在我怀疑原因是因为我没有此行:
decrypted += decipher.final('utf8');
但是,如果我添加该行,则会收到错误
TypeError: DecipherFinal fail
我尝试了不同的输出编码,没有IV,但是没有运气。我也读过这个问题:What's wrong with nodejs crypto decipher?似乎是同样的问题,但是我不理解我应该在openssl命令行上采取的步骤,否则将如何影响我的 Node 程序。
最佳答案
您是否尝试过将自动填充设置为false?默认情况下,它设置为似乎为true(请参见下文),因此,如果另一方不使用默认填充(无论如何,可能是PKCS#7填充)进行填充,那么结果应该会失败...decipher.setAutoPadding(auto_padding=true)