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