openssl加密文件别人无法解密

openssl加密文件别人无法解密

这是在 OS X 上。我使用以下命令加密了一个文件:

openssl enc -aes-256-cbc -salt -in secrets.json -out secrets.json.enc

我需要输入密码。然后我可以使用以下方法解密

openssl enc -d -aes-256-cbc -in secrets.json.enc -out secrets.json

系统要求输入密码,我就输入了刚才设置的密码,解密成功了。

然而,我的同事复制了这个文件,却发现他无法用同样的命令和密码解密。他看到的内容如下:

10:59 $ openssl enc -d -aes-256-cbc -in secrets.json.enc -out secrets.json
enter aes-256-cbc decryption password:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
bad decrypt
4611925440:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:570:

我的 OS X 有

11:31 $ openssl version
LibreSSL 2.2.7

他的 OS X 有

11:29 $ openssl version
OpenSSL 1.1.1b  26 Feb 2019

后来他升级到 LibreSSL 2.9.2,但仍然看到同样的问题。

答案1

可能有点晚了,但我遇到了同样的问题并找到了答案:这是因为默认情况下 LibreSSL 和 OpenSSL 不使用相同的摘要从密码短语创建密钥。LibreSSL 使用 MD5,而 OpenSSL 使用 sha256。您可以-md在编码或解码时使用带有选项的特定选项。使用

openssl enc -d -aes-256-cbc -in secrets.json.enc -out secrets.json -md md5

OpenSSL 版本(您用于解密的版本)应该可以正常工作。无论如何,最好在加密过程中也指定这一点,以避免依赖版本默认设置。

相关内容