解密收件人输入错误的 GPG 加密文件

解密收件人输入错误的 GPG 加密文件

我的计算机中有一个 GPG 密钥,其 ID 是“[电子邮件保护]“。

我正在使用该--encrypt命令加密一个虚拟文本文件,并将我自己添加为收件人,但我的 ID 上有一个拼写错误:

$ echo "Hello World" > foo
$ gpg --recipient [email protected] --encrypt foo

现在,如果我尝试使用 解密gpg -d foo.gpg,则会显示通常的密码屏幕,显示。如果我输入的密码正确,则文件可以正常解密。Juan Cruz Viotti <[email protected]>

这让我很困惑,因为我指定的收件人有拼写错误。gpg我的 ID 是否被添加为隐式收件人?

答案1

GPG 匹配您输入的收件人的第一部分:

[email protected]     # was typed in
[email protected]    # ID that was matched

只缺少最后一个字母。它甚至应该只输入 j 就可以工作,因为它会匹配您拥有的唯一键(类似于终端中的“制表符完成”)。

尝试执行您的命令,不仅省略最后一个字母,而且将其更改为电子邮件中的错误字母;它不应该匹配。

原因是指定用户 ID 的默认模式是子字符串匹配,因此您输入的部分电子邮件与用户 ID 的完整电子邮件相匹配。在GPG 的手册页

   By substring match.
          This is the default mode but  applications  may
          want to explicitly indicate this by putting the
          asterisk in front.  Match is  not  case  sensi‐
          tive.

     Heine
     *Heine

以下是略有不同的精简版本GnuPG网站

如何指定用户 ID

向 GnuPG 指定用户 ID 有不同的方法;以下是一些示例:

  • ::用于定位默认主目录。
  • 这里密钥 ID 采用通常的简短形式给出。
  • 234AABBCC34567C4, 0F323456784E56EAB, 01AB3FED1347A5612, 0x234AABBCC34567C4 :: 此处给出的是 OpenPGP 使用的长格式密钥 ID。
  • 1234343434343434C434343434343434, 123434343434343C3434343434343734349A3434, 0E1234343434343434343434EAB3484343434343434, 0xE1234343434343434343434EAB3484343434343434 :: 指定密钥 ID 的最佳方法是使用密钥的指纹。这样可以避免在密钥 ID 重复的情况下产生任何歧义(对于长密钥 ID 来说,这种情况非常罕见)。
  • 使用精确匹配字符串。等号表示这一点。
  • 使用必须完全匹配的电子邮件地址部分。左尖括号表示此电子邮件地址模式。
  • 所有单词必须完全匹配(不区分大小写),但可以在用户 ID 中以任何顺序出现。单词是字母、数字、下划线和所有设置了位 7 的字符的任意序列。
  • 使用本地 ID。这是一种非常低级的方法,只有真正需要它的应用程序才应该使用它。井号表示此方法。应用程序不应假设这只是一个数字。
  • 按不区分大小写的子字符串匹配。这是默认模式,但应用程序可能希望通过在前面放置星号来明确指示这一点。

并且任何gpg命令都遵守详细标志(-v),您可以添加多个标志以获得更“详细”/更多信息,我认为 10 是最大值,因此尝试添加-vvvvvvvvvv

相关内容