PGP文件加解密
公钥加密/签名,私钥解密
1. B提供公钥给A Gpg4win - Secure email and file encryption with GnuPG for Windows



2. A导入B的公钥,加密文件

gpg --full-generate-key # 生成密钥对
gpg --import b_public.asc # 导入公钥
gpg -e -r "B@xx.com" myfile.txt # 加密文件(使用提供公钥的邮箱)
gpg -d myfile.txt.gpg > file.txt # 解密文件
gpg --list-keys # 列出所有公钥
gpg --delete-key user@example.com # 删除公钥
# 警告:这会删除所有密钥!
rm -rf ~/.gnupg
gpg --export -a "aabbcc@example.com" > aabbcc_public_key.asc # 导出公钥
gpg --export-secret-keys -a "aabbcc@example.com" > aabbcc_private_key.asc # 导出私钥(需要密码)
3. B解密文件


其他方式
只需一个密码(对称加密)
# 发送端(Alice)加密文件,提示输入密码,生成加密文件:
gpg -c message.txt
# 将 secret_file.txt.gpg 发送给Bob
# 接收端(Bob)解密文件,提示输入密码,生成解密文件:
gpg -o original.txt -d message.txt.gpg
告警:gpg: Can't check signature: No public key(可忽略)
原因:勾选了签名身份 数字签名(验证文件来源)- 这部分需要签名者的公钥来验证


方案1:去除勾选 “签名身份” 验签正常


方案2:导入发送者公钥,并验证,使用解密私钥和签名公钥
gpg --edit-key "505645074@qq.com" # 导入后手动验证并确认信任
# 输入:fpr # 再次显示指纹
# 输入:trust # 设置信任级别
# 输入:5 (5 = 我绝对相信)
# 输入:y
# 输入:quit
gpg --decrypt --local-user "解密邮箱" --sender "签名邮箱" --output file.txt myfile.txt.gpg # 同时指定解密私钥和验证签名用的公钥


浙公网安备 33010602011771号