
GPG是用于对数据和通信进行加密和签名的工具,不过和PGP不同,它是免费的。
一、安装GPG
下载并安装GPG(https://www.gnupg.org/download/index.html),在命令提示符运行以下命令查看版本,返回版本信息则说明安装成功。
gpg --version
二、生成密钥对
在使用GPG加密和签名之前,先执行以下命令生成密钥对。
gpg --full-generate-key
接着就是一些选项:
C:\Users\ROG>gpg --full-generate-keygpg (GnuPG) 2.3.3; Copyright (C) 2021 g10 Code GmbHThis is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Please select what kind of key you want:(1) RSA and RSA(2) DSA and Elgamal(3) DSA (sign only)(4) RSA (sign only)(9) ECC (sign and encrypt) *default*(10) ECC (sign only)(14) Existing key from cardYour selection? 9Please select which elliptic curve you want:(1) Curve 25519 *default*(4) NIST P-384(6) Brainpool P-256Your selection? 1Please specify how long the key should be valid.0 = key does not expire<n> = key expires in n days<n>w = key expires in n weeks<n>m = key expires in n months<n>y = key expires in n yearsKey is valid for? (0) 0Key does not expire at allIs this correct? (y/N) y
还有输入Real name、Email address、Comment和口令。
三、生成撤销证书
撤销证书只能在密钥可用时生成,所以生成密钥对后,应该为其生成一份撤销证书,以备在某些情况下撤销密钥。
gpg --generate-revocation "YourName"
四、加密和解密文件
使用公钥加密data.zip文件,并将其输出为data.zip.gpg保存。其中--recipient参数用于指定接收者的USER-ID,不过输入USER-ID有点儿麻烦,使用生成密钥对时输入的Real name简单多了。
gpg --recipient "YourName" --output "data.zip.gpg" --encrypt "data.zip"
解密文件:
gpg --output "data.zip" --decrypt "data.zip.gpg"
五、签名和验证文件
明文签名:
明文签名在平时可能会很少用到,但的确有这样的时候,我们需要让他人知道某个消息就是我们发的。此时,可以将要发送的内容放到message.txt文件中,再执行以下命令为message.txt签名(由于签名用的是私钥,需要输入口令),签名后会生成message.asc签名文件,此文件包含了发送内容与签名,将文件或复制文件中的内容发送给收件人,对方收到后就可以进行验证了。
gpg --local-user "YourName" --clear-sign "message.txt"
作为收件人则要导入发件人的公钥,执行以下命令验证签名,如果收到的不是文件,则先将其保存为文本文件后再进行验证。
gpg --verify "message.asc"
独立签名:
要对Zip这类二进制文件签名时,不能将签名附加到文件中,而需要使用--detach-sign参数生成独立的签名文件。
gpg --local-user "YourName" --output "data.zip.sig" --detach-sign "data.zip"
这种签名方式在验证时,请将data.zip和data.zip.sig文件放在同一位置并执行以下命令:
gpg --verify "data.zip.sig"
六、同时进行加密和签名
如果既加密又要签名,可以使用以下命令:
gpg --local-user "YourName" --recipient "YourName" --output "data.zip.gpg" --sign --encrypt "data.zip"
在解密文件时,GPG会自动验证签名。
gpg --output "data.zip" --decrypt "data.zip.gpg"
七、导出密钥
导出公钥:
gpg --output "pubring.gpg" --export "YourName"
导出私钥:
gpg --output "secring.gpg" --export-secret-keys "YourName"
将C:\Users\ROG\AppData\Roaming\gnupg\trustdb.gpg和导出的pubring.gpg、secring.gpg进行保存。
八、导入密钥
导入公钥:
gpg --import "pubring.gpg"
导入私钥:
gpg --import "secring.gpg"
然后复制trustdb.gpg到对应的位置。




