我正在使用gpg来解密供应商发送给我的文件。当加密文件的内容为空时(供应商告诉我相关文件中没有内容),一切正常。
如果我尝试解密其中一个文件,我会得到:
gpg:无法处理这种暧昧 签名数据
有没有办法检查文件是否没有内容接受标题,以便我可以将其设置为更优雅地失败?
答案 0 :(得分:1)
根据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忽略加密文件中的所有签名数据,但当然您无法判断您正在解密的文件是否来自可靠来源。
答案 1 :(得分:0)
假设您使用的是unix shell脚本,在尝试解密GPG之前,您可以先执行'[ - / / / file]'。