一:背景介绍:
GPG这个加密解密工具其实用的很少,但在传统企业像银行系统与其交互上他们很多数据文件都是用gpg加密存储,防止数据外泄;(为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。)
最近在对接民生银行的系统需求发现他们交互文件数据都是用GPG工具加密的,也就意味着你需要用GPG工具解密;
二:GPG安装
Mac系统:brew install gpg 即可安装
三:GPG生成密钥
1:gpg --help
2:gpg --gen-key 回车
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择?1 (第一段是版权声明,可自行选择加密算法。默认选择第一个选项,表示加密和签名都使用RSA算法。)回车
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048) ---选择密码的位数,位数越大,越安全,但速度越慢
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) ---根据自己的需要选择对应的有效时间,如果想设置在2年后过期,那么应该输入2y
以上正确吗?(y/n) ---输入y,系统就要求你提供个人信息。
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合成用户标识,如下所示:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
真实姓名:乐杨俊 ---真实姓名"填入你姓名的英文写法
电子邮件地址:leyangjun@xx.com ---电子邮件地址"填入你的邮件地址
注释:乐杨俊-测试gpg ---只是注释而已,可以空着。
然后,你的"用户ID"生成了。
您选定了这个用户标识:
"乐杨俊 <leyangjun@xx.com>"
我的"真实姓名"是乐杨俊,"电子邮件地址"是leyangjun@xx.com,所以我的"用户ID"就是"乐杨俊 <leyangjun@xx.com>"。接下来系统会让你最后确认一次。
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? ---输入O表示"确定"。
接着,系统会让你设定一个私钥的密码。这是为了防止误操作,或者系统被侵入时有人擅自动用私钥。
您需要一个密码来保护您的私钥:---输入两次用于访问私钥的密码,紧记不能公开或丢失,不设置一路回车就行
回车后,会看到一堆字节信息
随后会看到你的公、私钥已经生成并签名
四:gpg常用命令
1:可以查看公钥:gpg --list-key
2:导出公钥并生成可视的字符:gpg -a -o --export meitu.pubkey (-a表示导出明文,否则是二进制文件内容)
3:加密文件:gpg -e -r leyangjun@xx.com leyangjun_test.txt (-r是指定对应公钥加密,如果有多个公钥的情况下可以指定对应加密,加密完后再当前目录下会有个对应的leyangjun_test.txt.gpg文件)
4:解密文件:gpg -d leyangjun_test.txt.gpg > ./leyangjun_test.txt.gpg
5:导入公钥:gpg --import /Users/leyangjun/Documents/pubkey.key (文件地址直接导入即可)
6:查找有多少私钥:gpg --list-secret-key
7:列出秘钥指纹:gpg --list-secret-keys --fingerprint
8:导出公钥:gpg -o leyangjun_public.key --export 0C3DA80F7AD5EA0D45FADFC8B15E62694B634B49
9:导出私钥:gpg -a -o leyangjun_private.key --export-secret-keys
10:删除秘钥:gpg --delete-secret-keys 4ED710330228DD2E65322722537B24B55C35B439
11:删除公钥:gpg --delete-keys 4ED710330228DD2E65322722537B24B55C35B439 (需要先删除私钥能后在删除公钥)