我gpg用来加密和解密文件。以下是我从这个问题中参考的步骤:
# Sender
gpg --encrypt --recipient recipient@gmail.com --output confidential.pgp confidential.txt
gpg -–sign –-local-user sender@gmail.com --output signed.pgp confidential.pgp
# Recipient
gpg --decrypt –output confidential.pgp signed.pgp
gpg --decrypt –output confidential.txt confidential.gpg
它有效,但是如果必须在接收端强制进行签名验证,这是加密、签名和解密文件的正确方法吗?特别是,解密两次似乎有点奇怪。可以这样在做单指令?
我尝试--sign直接在加密命令中使用,但它只是警告和解密不满足强制签名要求的文件。这是官方手册,但它并没有谈到一步完成所有事情。
# Sender
gpg -–sign –-local-user sender@gmail.com --encrypt --recipient recipient@gmail.com --output signed.pgp confidential.txt
# Recipient
gpg --decrypt –output confidential.txt signed.pgp
更新 1
经过一番研究,我发现了一个非常相关的问题,似乎表明gnupg --sign --encrypt先有迹象,然后encrypts是文件。因此decrypt,无论如何我们都必须先查看文档。它可以选择输出状态,使用--status-fd它可以使用简单的脚本检查签名是否正常。所以代码看起来像:
# Sender
gpg -–sign –-local-user sender@gmail.com --encrypt --recipient recipient@gmail.com --output signed.pgp confidential.txt
# Recipient
gpg --decrypt --status-fd –output confidential.txt signed.pgp | verify
其中verify是检查状态寄存器并在需要时中止的 shell 脚本。