如何使用带有SHA-256的OpenSSL和AES-256加密文件?


1

系统:Linux Mint 18.3 Cinnamon 64位。

OpenSSL:1.0.2g

通常,我会按如下方式加密文件:

openssl enc -aes-256-cbc -salt -in somefile -out somefile.enc

但我想知道什么算法将用于哈希我的密码,如果我可以改变它?


Dupe superuser.com/questions/455463 / ...除了刚才过时之外; 完整的细节见crypto.stackexchange.com/questions/3298/...。请注意,任何单个哈希都是错误的PBKDF; SHA-256并没有明显优于MD5。并且-salt已经超过十年的默认值,接近两个。
dave_thompson_085

@ dave_thompson_085:OpenSSL 确实使用KDF而不是简单的哈希,尽管它似乎仍然是本土的而且相当弱(参见EVP_BytesToKey)。
grawity

1
@grawity我对密码QI链接的回答详细说明了这一点。EVP_BytesToKey是来自PKCS5的PBKDF1的调整,但是命令行enc使用EVP_BytesToKey且迭代计数为1,因此它每个输出块只执行一个哈希,它实际上不会像PBKDF那样迭代。熊同意:security.stackexchange.com/questions/29106 / ...
dave_thompson_085

Vlastimil:你不是用它来防弹,是吗?考虑一下GPG / PGP,它应该仍然是最大的玩家。@ dave_thompson_085他们仍然只迭代一次?Yowza。离开MD5至少是一个小步骤。他们是否跟踪使用的哈希和加密,或者您还必须记住自己?(我也引用了熊 ;-)
Xen2050

Answers:


1

我偶然发现,在这里,对于openssl版本1.1.0:

-md digest
    Use the specified digest to create the key from the passphrase. The default algorithm is sha-256.

因此,没有必要为新版本指定消息摘要算法,openssl因为它已经使用了SHA-256。

但是因为在我的系统上有openssl版本1.0.2g,我进一步挖掘并发现,在这里,:

... In OpenSSL 1.1.0 we changed from MD5 to SHA-256 ...

从本质上讲,这意味着,我的openssl意愿默认使用旧的和过时的MD5。

幸运的是,这可以通过openssl版本1.0.2g 更改为SHA-256 :

openssl enc -aes-256-cbc -md sha256 -salt -in somefile -out somefile.enc

如果您的openssl版本比我旧,您可能想尝试-md sha1,如果上述操作失败。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.