生成密钥对
使用gpg之前需要先创建一个密钥对
gpg --gen-key
这样会生成一对密钥,私钥自己妥善保管,公钥发给其他人。
导出公钥
导出公钥为文件jianlee_gpg.key
gpg --armor --export > jianlee_gpg.key # --armor 可以使用 -a 缩略形式,把加密后的信息转换为便于传送的ASCII码。 # --export 导出公钥
上面的文件 jianlee_gpg.key 就是我的公钥,可以传送给任何人,别人使用这个公 钥加密信息我都可以使用自己的私钥解密。
导入公钥
我们可能需要保存很多不同的公钥,gnupg提供一个文件存放公钥。默认是 ~/.gnupg/pubring.gpg 。这样导入一个公钥:
gpg --import jianlee_gpg.key
查看公钥:
gpg -kv
使用GnuPG加解密文件
我在jianlee机器上生成公钥jianlee_gpg.key,并传送给dev3-30机器。下面操作 中,加密是在dev3-30上用jianlee_gpg.key公钥,然后把加密后的文件传送给 jianlee主机;解密操作是jianlee主机使用自己的私钥解密。
加密文件
[root@dev3-30 ~]# gpg -kv /root/.gnupg/pubring.gpg ------------------------ pub 1024D/1872824A 2009-04-10 uid 李建 (李建的个人通讯密钥) <lijian.gnu@gmail.com> sub 2048g/26A253C0 2009-04-10 [root@dev3-30 ~]# gpg -ea -r 1872824A /etc/passwd gpg: 26A253C0:没有证据表明这把密钥真的属于它所声称的持有者 pub 2048g/26A253C0 2009-04-10 李建 (李建的个人通讯密钥) <lijian.gnu@gmail.com> 主钥指纹: 5B44 7EBE 7C70 A386 E405 7B06 7517 4AB3 1872 824A 子钥指纹: 0F81 4C99 B878 3092 4F7E FF16 516A D760 26A2 53C0 这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自 己在做什么,您可以在下一个问题回答 yes。 无论如何还是使用这把密钥吗?(y/N)y 文件‘/etc/passwd.asc’已存在。 是否覆盖?(y/N)y
-e 等同 --encrypt,加密 -a 等同 --armor,使用ASCII形式 -r 等同 --recipient,指定信息接受者,就是指定公钥
使用 -a 参数(ASCII形式)通常是使用email传递加密信息的情况,如果传递信息 的协议可以处理二进制,就不需要使用这个参数。二进制形式占用空间会小点。
[root@dev3-30 ~]# ll /etc/passwd* -rw-r--r-- 1 root root 2161 04-09 16:58 /etc/passwd # 源文件 -rw-r--r-- 1 root root 2118 04-09 15:10 /etc/passwd- -rw-r--r-- 1 root root 2062 04-10 10:24 /etc/passwd.asc # ASCII加密文件 -rw-r--r-- 1 root root 1452 04-10 10:34 /etc/passwd.gpg # 二进制加密文件
解密文件
root@jianlee:~/lab# scp dev3-30:/etc/passwd.gpg /tmp/ passwd.gpg 100% 1452 1.4KB/s 00:00 root@jianlee:~/lab# gpg -o passwd.dev3-30 -d /tmp/passwd.gpg ... root@jianlee:~/lab# cat passwd.dev3-30 ...
