linux - GPG 非对称加密工具
GNU Privacy Guard (GPG) 是一种主要设计用于使用公钥加密技术对数据进行加密和签名的工具。然而,它还包含仅使用用户提供的密码来加密数据的能力,并且支持多种加密算法。
1. 查看gpg支持的算法
gpg --version
2. 生成密钥
# 使用默认选择
gpg --generate-key
# 更灵活的算法选择
gpg --full-generate-keys
3. 列出系统已有的密钥
# 列出公钥
gpg -k
gpg --list-keys
# 列出私钥
gpg -K
4. 导出密钥
# 以明文导出公钥
gpg -a -o public-key.txt --export [用户ID]
# 以明文导出私钥
gpg -a -o private-key.sub --export-secret-keys [用户ID]
5. 将公钥上传到服务器
gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net
6. 查看用户公钥指纹
gpg --fingerprint [用户ID]
7. 导入他人的公钥
# 导入密钥
gpg --import [密钥文件]
# 查找他人的公钥
gpg --keyserver hkp://subkeys.pgp.net --search-keys [用户ID]
8. 加密和解密
# 利用接收者公钥加密文件, --recipient [用户ID] 文件接收者用户ID
gpg --recipient [用户ID] --output demo.en.txt --encrypt demo.txt
# 利用私钥解密文件
gpg -o demo.txt --decrypt demo.en.txt
# 不使用选项直接进行解密
gpg demo.en.txt
9. 文件签名
# 默认生成二进制签名文件
gpg --sign demo.txt
# 生成ASII码的签名文件
gpg --clearsign demo.txt
# 生成独立的签名文件
gpg --detach-sign demo.txt
# 生成ASII码的独立签名文件
gpg --armor --detach-sign demo.txt
10. 签名和加密
# 利用发信者私钥签名, 接收者公钥加密, 以ASII进行输出
gpg --local-user [发信者ID] --recipient [接收者ID] --armor --sign --encrypt demo.txt
# 利用发信者公钥验证签名
gpg --verify demo.txt.asc demo.txt