尽管生成的明文正确,OpenSSL 仍显示“解密失败”

尽管生成的明文正确,OpenSSL 仍显示“解密失败”

我在 RHEL 6.9 下使用 OpenSSL 1.0.1e-fips。

我已经用以下命令加密了一个文件:

openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext

然后我使用以下命令解密加密文件:

openssl enc -aes-256-gcm -a -d -in ciphertext

此命令产生以下输出:

test text
bad decrypt

文件已正确解密(即文件内容确实是“测试文本”),但 OpenSSL 报告“解密错误”。即使我明确指定要使用的哈希函数(例如-md sha512)。

为什么我会收到“解密错误”的消息?

答案1

OpenSSL 的任何版本都不支持任何 AEAD 模式(包括 GCM)与“enc”命令行应用程序结合使用。如果您尝试使用此类模式加密/解密,所有当前支持的 OpenSSL 版本都将显示错误消息:

$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported

OpenSSL 1.0.1 是一个非常老的 OpenSSL 版本,目前不受项目支持(尽管 Red Hat 可能支持)。非常老的 OpenSSL 版本没有产生上述警告的 AEAD 检查,并尝试加密/解密 - 但不正确。最重要的是,“enc”命令不知道如何处理 AEAD 模式的“标签”(因此您会看到“解密错误”消息)。标签对于安全性至关重要,因为它可以验证密文的完整性。

该命令可能看起来有效 - 但实际上没有。基本上不要将 GCM 模式与 enc 命令一起使用。

相关内容