我在 RHEL 6.9 下使用 OpenSSL 1.0.1e-fips。
我用这个命令加密了一个文件:
openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
Run Code Online (Sandbox Code Playgroud)
然后我用这个命令解密加密的文件:
openssl enc -aes-256-gcm -a -d -in ciphertext
Run Code Online (Sandbox Code Playgroud)
此命令产生以下输出:
test text
bad decrypt
Run Code Online (Sandbox Code Playgroud)
文件已正确解密(即文件内容确实是“测试文本”),但 OpenSSL 报告“解密错误”。即使我明确指定要使用的哈希函数(例如-md sha512),也会发生这种情况。
为什么我收到“坏解密”消息?
小智 5
没有任何版本的 OpenSSL 支持与“enc”命令行应用程序结合使用的任何 AEAD 模式(包括 GCM)。如果您尝试使用这种模式加密/解密,所有当前支持的 OpenSSL 版本都将显示错误消息:
$ openssl enc -aes-256-gcm -a -e -in plaintext -out ciphertext
enc: AEAD ciphers not supported
Run Code Online (Sandbox Code Playgroud)
OpenSSL 1.0.1 是 OpenSSL 的一个非常旧的版本,目前项目不支持(尽管 Red Hat 可能支持它)。非常旧版本的 OpenSSL 没有产生上述警告的 AEAD 检查,并且无论如何都尝试加密/解密 - 但不正确。最重要的是,“enc”命令不知道如何处理 AEAD 模式的“标签”(因此您会看到“错误解密”消息)。该标签对于安全性至关重要,因为它可以验证密文的完整性。
该命令可能看起来有效 - 但事实并非如此。基本上不要将 GCM 模式与 enc 命令一起使用。
归档时间: |
|
查看次数: |
3780 次 |
最近记录: |