【发布时间】:2021-10-26 11:23:12
【问题描述】:
我和我的同事正在尝试交换加密的配置文件。 A 可以解密由 B 加密的文件encrypted-dev.enc。但我无法解密,B 也无法解密我发送给她的文件。错误是
bad decrypt
4672347584:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:610:
通过阅读(例如this 答案),此错误指的是openssl 用于消息摘要的算法。为了解决这个问题,人们总是告诉你用-md md5之类的参数来指定算法。但是我们的命令已经包含了这个参数。
- 人员 A 使用的是 openssl 1.1.1f。
- 人员 B 使用的是 openssl 1.1.1i。
- 我正在使用 openssl 1.1.1j。
为了加密,我们使用这个命令:
export CONFIG_KEY='[ key ]'
openssl enc -md sha1 -aes-256-cbc -pbkdf2 -pass env:CONFIG_KEY -out ./tests/e2e/config/encrypted-dev.enc -in ./tests/e2e/config/config-dev.json
为了解密,我们这样做:
export CONFIG_KEY='[ key ]'
openssl enc -md sha1 -aes-256-cbc -pbkdf2 -d -pass env:CONFIG_KEY -in ./tests/e2e/config/encrypted-dev.enc -out ./tests/e2e/config/config-dev.json
还有其他人遇到过这种情况吗?
【问题讨论】:
-
这也可能是因为“密钥”之间的编码差异 - 当然,它们实际上是密码,而不是密钥。您可能使用非 ASCII 字符吗?你在哪个系统上?
-
谢谢!我们都在 macOS 上,并以相同的方式从同一来源获取密钥。
-
我认为你是对的@MaartenBodewes - 这个问题可能是由于缺少某些字符的密钥副本引起的。我们现在可以使用
-md md5参数进行加密/解密。 openssl 的错误消息没有给你任何线索似乎令人难以置信,但我想这是出于安全原因。 -
OpenSSL 从未真正设计用于通过命令行进行安全加密。对我来说,它似乎更像是一个使用加密函数的示例(例如,迭代计数为 1 的 PBKDF)。但是,在这种情况下:无法区分损坏的密文或错误的密钥,因此它只是给出了一个相当技术性的错误消息,即填充无效。您可能希望改用经过身份验证的加密。
-
非常感谢您为我指明了正确的方向!
标签: encryption openssl sha1