安装 GPG
下载并安装 GPG,在命令提示符运行以下命令查看版本,返回版本信息则说明安装成功。
1 | gpg --version |
生成密钥对
在使用 GPG 加密和签名之前,先执行以下命令生成密钥对。
1 | gpg --full-generate-key |
接着就是一些选项:
1 | C:\Users\ROG>gpg --full-generate-key |
还有输入 Real name
、Email address
、Comment
和口令。
生成撤销证书
撤销证书只能在密钥可用时生成,所以生成密钥对后,应该为其生成一份撤销证书,以备在某些情况下撤销密钥。
1 | gpg --generate-revocation "YourName" |
加密和解密文件
使用公钥加密 data.zip
文件,并将其输出为 data.zip.gpg
保存。其中 --recipient
参数用于指定接收者的 USER-ID,不过输入 USER-ID 有点儿麻烦,使用生成密钥对时输入的 Real name
简单多了。
1 | gpg --recipient "YourName" --output "data.zip.gpg" --encrypt "data.zip" |
解密文件:
1 | gpg --output "data.zip" --decrypt "data.zip.gpg" |
签名和验证文件
明文签名:
明文签名在平时可能会很少用到,但的确有这样的时候,我们需要让他人知道某个消息就是我们发的。此时,可以将要发送的内容放到 message.txt
文件中,再执行以下命令为 message.txt
签名(由于签名用的是私钥,需要输入口令),签名后会生成 message.asc
签名文件,此文件包含了发送内容与签名,将文件或复制文件中的内容发送给收件人,对方收到后就可以进行验证了。
1 | gpg --local-user "YourName" --clear-sign "message.txt" |
作为收件人则要导入发件人的公钥,执行以下命令验证签名,如果收到的不是文件,则先将其保存为文本文件后再进行验证。
1 | gpg --verify "message.asc" |
独立签名:
要对 Zip
这类二进制文件签名时,不能将签名附加到文件中,而需要使用 --detach-sign
参数生成独立的签名文件。
1 | gpg --local-user "YourName" --output "data.zip.sig" --detach-sign "data.zip" |
这种签名方式在验证时,请将 data.zip
和 data.zip.sig
文件放在同一位置并执行以下命令:
1 | gpg --verify "data.zip.sig" |
同时进行加密和签名
如果既加密又要签名,可以使用以下命令:
1 | gpg --local-user "YourName" --recipient "YourName" --output "data.zip.gpg" --sign --encrypt "data.zip" |
在解密文件时,GPG 会自动验证签名。
1 | gpg --output "data.zip" --decrypt "data.zip.gpg" |
导出密钥
导出公钥:
1 | gpg --output "pubring.gpg" --export "YourName" |
导出私钥:
1 | gpg --output "secring.gpg" --export-secret-keys "YourName" |
将 C:\Users\ROG\AppData\Roaming\gnupg\trustdb.gpg
和导出的 pubring.gpg
、secring.gpg
进行保存。
导入密钥
导入公钥:
1 | gpg --import "pubring.gpg" |
导入私钥:
1 | gpg --import "secring.gpg" |
然后复制 trustdb.gpg
到对应的位置。