使用gpg key加解密文件

gpg key除了在安装软件包时校验软件包签名,还可以用于加解密文件。这里系统为CentOS6.3。

1、首先创建gpg key

cd ~
gpg --gen-key

然后选择加密算法、加密强度、是否设置有效期,设置名称和邮箱,输入保护密码,最后在/root/.gnupg目录下生成公钥和私钥文件。
具体过程可参考:http://www.live-in.org/archives/1410.html中的创建过程。

创建结果:

要随时显示上列信息,执行:

gpg --fingerprint thomas@example.com

F24AC529是gpg key ID。
A443 76DF 2F35 1874 4F36 3FBA 5161 169D F24A C529是密钥指纹。

2、将公钥上传到密钥对服务器
上传密钥服务器是为了别人能方便的下载到你的公钥。世界上有很多个密钥对服务器,它们会相互同步各自的密钥。比如上传到pgp.mit.edu服务器的公钥在keys.gnupg.net也能获取到。这里上传到默认服务器keys.gnupg.net。

gpg --keyserver keys.gnupg.net --send-keys F24AC529

没有报错就表示成功了。

3、其它机器就可以导入公钥了

gpg --recv-keys 2F39D84D

显示结果:

4、使用获得的公钥加密文件
建立一个文件hello.txt,对hello.txt文件加密:

gpg --encrypt --armor -r F24AC529 hello.txt

加密后会生成加密文件hello.txt.asc。

5、解密文件
随后将加密过的文件发给私钥持有人,使用私钥解密:

gpg -o hello.txt --decrypt hello.txt.asc

输入保护密码,解密成功后就可以看到导出的原文件了。

使用到的参数说明:
–gen-key:生成一副新的密钥对
–fingerprint:显示指纹
–send-keys:把密钥导出到某个公钥服务器上
–recv-keys:从公钥服务器上导入密钥
-a, –armor:输出经ASCII封装
-r, –recipient USER-ID:为收件者“某某”加密
-e, –encrypt:加密数据
-d, –decrypt:解密数据
-o, –output FILE:指定输出文件

参考资料:
http://fedoraproject.org/wiki/GPG密钥
http://blog.microsuncn.com/?p=2156
http://www.blogjava.net/alancxx/articles/348896.html
http://www.alexgao.com/2009/01/24/gpg/