我希望能够检查使用哪个(内部)对称算法使用公钥加密带有 GPG 的文件。
我读过的某个地方可以这样做--list-packets
,所以我尝试了
$ gpg --list-packets encrypted_file.asc
gpg: encrypted with 256-Bit ECDH key, ID 0865135E90D1AF38, created 2020-03-20
"First Last <[email protected]>"
# off=0 ctb=84 tag=1 hlen=2 plen=94
:pubkey enc packet: version 3, algo 18, keyid 0865135E90D1AF38
data: [263 bits]
data: [392 bits]
# off=96 ctb=d2 tag=18 hlen=3 plen=1965 new-ctb
:encrypted data packet:
length: 1965
mdc_method: 2
# off=118 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=120 ctb=cb tag=11 hlen=2 plen=0 partial new-ctb
:literal data packet:
mode b (62), created 0, name="_CONSOLE",
raw data: unknown length
我以为对称加密算法是在 中编码的mdc_method
,但是无论我使用什么算法来加密,它总是显示2
在那里。所以这似乎不是正确的方法。
如何找出对称算法?
诀窍是在命令中添加选项
-vv --show-session-key
:这会在输出中添加如下一行:
冒号前的数字(
8
此处)是用于根据此列表加密文件内容的对称算法(取自GnuPG 来源):所以在这种情况下,文件是使用 AES-192 编码的。
请注意,这
AES
意味着 AES-128。