【发布时间】:2012-06-21 14:47:23
【问题描述】:
我正在使用 gpg 解密供应商发送给我的文件。当加密文件的内容为空时,一切正常(供应商告诉我有问题的文件中没有内容)。
如果我尝试解密其中一个文件,我会得到:
gpg: 无法处理这种模棱两可的情况 签名数据
有什么方法可以检查文件是否没有内容接受标题,以便我可以将其设置为更优雅地失败?
【问题讨论】:
标签: encryption gnupg
我正在使用 gpg 解密供应商发送给我的文件。当加密文件的内容为空时,一切正常(供应商告诉我有问题的文件中没有内容)。
如果我尝试解密其中一个文件,我会得到:
gpg: 无法处理这种模棱两可的情况 签名数据
有什么方法可以检查文件是否没有内容接受标题,以便我可以将其设置为更优雅地失败?
【问题讨论】:
标签: encryption gnupg
根据this mailing-list post 的说法,官方的 PGP 工具有一个错误,有时会导致它产生格式错误的消息。您可以通过运行gpg --list-packets path/to/encrypted/file.pgp 并查看输出来验证您的特定文件是否属于这种情况。如果您看到 :onepass_sig packet: 紧跟在 :signature packet: 之后,那么可能就是这样。
根据我的(有限)经验,如果发件人试图加密一个空文件,就会发生这种情况。不幸的是,由于加密旨在使人们难以看到里面的内容,因此在您尝试解密之前很难判断是否确实如此。 gpg 的--list-packets 输出会为您提供一些信息,但我注意到:literal data packet: 输出通常会显示“原始数据:0 字节”,即使该消息包含非空文件。
您可以使用--skip-verify 选项使 gpg 忽略加密文件中的所有签名数据,但是当然您无法判断您正在解密的文件是否来自受信任的来源。
【讨论】:
假设您使用的是 unix shell 脚本,您可以在尝试 GPG 解密之前先执行“[ -s /the/file ]”。
【讨论】: