这是在 OS X 上。我使用以下命令加密了一个文件:
openssl enc -aes-256-cbc -salt -in secrets.json -out secrets.json.enc
Run Code Online (Sandbox Code Playgroud)
我被要求输入密码。然后我可以解密它
openssl enc -d -aes-256-cbc -in secrets.json.enc -out secrets.json
Run Code Online (Sandbox Code Playgroud)
系统要求我输入密码,我使用了刚才设置的密码。解密成功。
然而,我的同事复制了这个文件,却发现他无法用相同的命令和密码解密它。这是他所看到的:
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:
Run Code Online (Sandbox Code Playgroud)
我的 OS X 有
11:31 $ openssl version
LibreSSL 2.2.7
Run Code Online (Sandbox Code Playgroud)
他的 OS X 有
11:29 $ openssl version
OpenSSL 1.1.1b 26 Feb 2019
Run Code Online (Sandbox Code Playgroud)
后来他升级到 LibreSSL 2.9.2,但仍然看到同样的情况。
小智 14
可能有点晚了,但我遇到了同样的问题并弄清楚了:这是因为默认情况下 LibreSSL 和 OpenSSL 不使用相同的摘要从密码创建密钥。LibreSSL 使用 MD5 和 OpenSSL sha256。您可以要求在编码或解码时使用特定的选项-md。使用
openssl enc -d -aes-256-cbc -in secrets.json.enc -out secrets.json -md md5
Run Code Online (Sandbox Code Playgroud)
在 OpenSSL 版本(您用来解密的版本)上应该可以工作。无论如何,最好在加密期间指定这一点,以避免依赖版本默认设置。
| 归档时间: |
|
| 查看次数: |
13316 次 |
| 最近记录: |