![我是否必须对签名和加密的文件进行两次解密才能获取实际的数据文件?](https://linux22.com/image/1540446/%E6%88%91%E6%98%AF%E5%90%A6%E5%BF%85%E9%A1%BB%E5%AF%B9%E7%AD%BE%E5%90%8D%E5%92%8C%E5%8A%A0%E5%AF%86%E7%9A%84%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E4%B8%A4%E6%AC%A1%E8%A7%A3%E5%AF%86%E6%89%8D%E8%83%BD%E8%8E%B7%E5%8F%96%E5%AE%9E%E9%99%85%E7%9A%84%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个文件需要解密两次才能获得实际的数据文件。我用来解密文件的命令是:
gpg -o Tesfile.txt -d Testfile.txt.pgp
我读到的是,如果解密文件已签名,则签名也会被验证。-d
选项也会验证和解密文件。但这个特定的文件不会立即解密。
我应该使用什么 gpg 命令来使用单个命令解密文件?
答案1
如果文件是一次性加密和签名的,您也可以一次性解密和验证。在这种情况下,OpenPGP 消息由提供加密层的 OpenPGP 数据包构成,并且在加密容器内,消息被签名:
gpg --recipient [email protected] -o file.gpg --sign --encrypt file
但当然,人们可以先对消息进行签名(例如通过运行gpg --clearsign file
),然后手动加密输出(观察这gpg
称为 twize):
gpg --clearsign file | gpg --recipient [email protected] --encrypt -o file.gpg
在这种情况下,清晰签名的文件(将签名和消息包装在一个文件中,而不是提供单独的签名文件)在第二次运行中被加密,并且所有 OpenPGP 标头都被重复。
您可以通过运行来分析 OpenPGP 消息的结构gpg --list-packets <filename>
,它提供了 OpenPGP 消息的非常技术性的描述,包括所有单独的 OpenPGP 数据包和报头。阅读RFC 4880,OpenPGP将有助于理解输出。