即使使用 --digest-algo SHA512,gpg 也使用 sha1?

use*_*971 3 gnupg

在我使用此代码加密 gpg.txt 之后

$ gpg -c --cipher-algo AES256 --digest-algo SHA512 "GPG.txt"
Run Code Online (Sandbox Code Playgroud)

我检查了结果,看它是否用 AES256 加密并用 SHA512 散列

$ gpg --list-packets GPG.txt.gpg
symkey enc packet: version 4, cipher 9, s2k 3, ***hash 2***
gpg: AES256 encrypted data
Run Code Online (Sandbox Code Playgroud)

我发现 Cipher=9,这是我问的 AES256,但是 Hash=2,它代表 SHA1,而不是我想要的 10=SHA512!

为什么会这样?有谁知道如何强制 gpg 使用 SHA512 而不是 SHA1?

rsa*_*saw 8

我不想这么说,但请阅读 gpg 手册页。

--digest-algo选项为消息选择消息摘要算法......即,如果您创建签名。

--s2k-digest-algo选项设置用于散列密码短语的算法。如果您将THAT设置为 sha512,那么您将hash 10在该 symkey enc 数据包行上看到。

在下面的评论中回答您的问题:

  • 使用--cipher-algo指定用于加密实际消息的对称密码算法。
  • 使用--digest-algo指定用于哈希时签署的消息摘要算法。
  • 使用--s2k-digest-algo指定的算法用于在各种操作散列密码短语的摘要(例如,使用时指定的对称密码-c)。