【问题标题】:Differences in behavior for different openssl versions不同 openssl 版本的行为差异
【发布时间】:2023-12-04 20:02:01
【问题描述】:

我不确定我在这里做错了什么,但我已将所有密码作为加密字符串保存在一个文件中。我用来加密它们的命令是这样的:

echo "password" | openssl enc -aes-256-cbc -a -nosalt

然后我使用password 作为加密密钥。

最初(使用 openssl 版本 1.0.2g),这导致了字符串

7Lz5dLLYCLCv9GjadL1LTQ==

已保存到密码文件中。但是,当我现在使用 1.1.0g 版本运行相同的命令时,我得到了字符串

qq26+CHHB6MuY33GAqeIVw==

这意味着当我现在来解码我的密码时,它们没有正确解码。我在这里有什么遗漏吗?

注意:我知道nosalt 选项是个坏主意,我实际上并没有使用它。我刚刚将其包含在此处以帮助澄清我的问题。

【问题讨论】:

  • openssl enc man page 没有列出更改,例如将默认哈希更改为 SHA-512。也许发行说明提到了一些东西。如果一切都失败了,那么试试-md md5-md sha1 选项。在不同系统上进行测试时,您可能应该明确使用echo -n 以避免新行。它通常会导致不同的结果。
  • 是的,-md md5 已经做到了。非常感谢。可惜它不在 man doc 中……让我搜索了几个小时。
  • 当不同版本甚至无法正常互操作时,openssl 就一团糟。您将“寻找几个小时”,因为它们的记录很差,并且隐藏在一个角落里。不要浪费你的青春。这些时间已经白白浪费了。

标签: linux bash openssl versioning


【解决方案1】:

用于根据在 OpenSSL 1.0.2 和 OpenSSL 1.1.0 之间更改的密码生成加密密钥的默认哈希值。

查看此常见问题解答条目:

https://www.openssl.org/docs/faq.html#USER3

在 1.0.2 中,默认哈希是 md5,在​​ 1.1.0 中是 sha256。使用“-md”选项指定要使用的哈希。

【讨论】:

  • 似乎是一个文档错误。 man openssl enc 应该清楚地记录下来。
最近更新 更多