当我用此代码加密 gpg.txt 后
$ gpg -c --cipher-algo AES256 --digest-algo SHA512 "GPG.txt"
我检查了结果,看它是否使用 AES256 加密并使用 SHA512 进行哈希处理
$ gpg --list-packets GPG.txt.gpg
symkey enc packet: version 4, cipher 9, s2k 3, ***hash 2***
gpg: AES256 encrypted data
我发现 Cipher=9(正如我所要求的那样,是 AES256),但是 Hash=2(代表 SHA1)而不是我想要的 10=SHA512!
为什么会发生这种情况?有人知道如何强制 gpg 使用 SHA512 而不是 SHA1 吗?
答案1
我不想这么说,但是阅读 gpg 手册页。
该--digest-algo
选项为消息选择消息摘要算法...即,如果您创建签名。
该--s2k-digest-algo
选项设置使用什么算法来散列密码。如果你设置那hash 10
到 sha512,然后您将在该 symkey enc 数据包行上看到。
回答您在下面评论中提出的问题:
- 用于
--cipher-algo
指定实际加密消息所用的对称密码算法。 - 用于
--digest-algo
指定签名时对消息进行哈希处理的摘要算法。 - 用于
--s2k-digest-algo
指定在各种操作中对密码进行散列所使用的摘要算法(例如,使用时指定的对称密码-c
)。