这篇博客小编就直接简单的讲讲linux下gpg的使用啦
Step 1:创建两个测试用户
[root@cmq ~]# useradd user1
[root@cmq ~]# useradd user2
修改密码
[root@cmq ~]# passwd user1
Changing password for user user1.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@cmq ~]# passwd user2
Changing password for user user2.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Step 2:分别切换到两个用户下创建对称密钥对
[root@cmq ~]# su - user1
[user1@cmq ~]$
[root@cmq ~]# su - user2
[user1@cmq ~]$
user1创建密钥对:
[user1@cmq ~]$ gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: 已创建目录‘/home/user1/.gnupg’
gpg: 新的配置文件‘/home/user1/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/user1/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/user1/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/home/user1/.gnupg/pubring.gpg’已建立
请选择您要使用的密钥种类:
(1) DSA 和 ElGamal (默认)
(2) DSA (仅用于签名)
(5) RSA (仅用于签名)
您的选择? 1
DSA 密钥对会有 1024 位。
ELG-E 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)2048
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期
以上正确吗?(y/n)y
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
“Heinrich Heine (Der Dichter) <[email protected]>”
真实姓名:拓远教育用户1 //这里是支持中文的
电子邮件地址:[email protected] //这里是邮箱地址啦
注释:拓远教育 //注释可要可不要
您正在使用‘utf-8’字符集。
您选定了这个用户标识:
“拓远教育用户1 (拓远教育) <[email protected]>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
您需要一个密码来保护您的私钥。 //这里的密码可不要忘记啦哈
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
+++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++.+++++++++++++++++++++++++++++++++++.++++++++++..++++++++++++++++++++>++++++++++........................................................+++++
随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要284字节)
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。 //这里的窍门就是狂点鼠标就是了
++++++++++..++++++++++..++++++++++.+++++.++++++++++++++++++++++++++++++.++++++++++++++++++++.+++++++++++++++++++++++++..+++++++++++++++++++++++++++++++++++>++++++++++>+++++.............+++++^^^
gpg: /home/user1/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 56DFD81C 被标记为绝对信任
公钥和私钥已经生成并经签名。
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
pub 1024D/56DFD81C 2013-05-29
密钥指纹 = 5B9C 8E4A 5108 8212 F468 7E07 D50A 5AE3 56DF D81C
uid 拓远教育用户1 (拓远教育) <[email protected]> //这个部分要注意啦,这就是用户的标识了
sub 2048g/400B185A 2013-05-29
user2创建密钥对的过程和user1相同
[user2@cmq ~]$ gpg --gen-key
gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: 已创建目录‘/home/user2/.gnupg’
gpg: 新的配置文件‘/home/user2/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/home/user2/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/home/user2/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/home/user2/.gnupg/pubring.gpg’已建立
请选择您要使用的密钥种类:
(1) DSA 和 ElGamal (默认)
(2) DSA (仅用于签名)
(5) RSA (仅用于签名)
您的选择? 1
DSA 密钥对会有 1024 位。
ELG-E 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)2048
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0
密钥永远不会过期
以上正确吗?(y/n)y
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
“Heinrich Heine (Der Dichter) <[email protected]>”
真实姓名:拓远教育用户2
电子邮件地址:[email protected]
注释:拓远教育
您正在使用‘utf-8’字符集。
您选定了这个用户标识:
“拓远教育用户2 (拓远教育) <[email protected]>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
您需要一个密码来保护您的私钥。
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
++++++++++++++++++++++++++++++.++++++++++.++++++++++.+++++++++++++++++++++++++++++++++++++++++++++.+++++++++++++++++++++++++.+++++.++++++++++..>.+++++.......................................>+++++.......<.+++++.....+++++
随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要280字节)
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
....+++++.+++++.+++++.+++++.++++++++++.++++++++++++++++++++..++++++++++.+++++++++++++++.++++++++++.+++++...+++++..++++++++++++++++++++.++++++++++++++++++++.++++++++++>+++++...+++++>+++++........................................................+++++^^^
gpg: /home/user2/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 B1279E8F 被标记为绝对信任
公钥和私钥已经生成并经签名。
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
pub 1024D/B1279E8F 2013-05-29
密钥指纹 = E115 F7A7 1556 AD1D 48CA 7B1A 9677 1EAF B127 9E8F
uid 拓远教育用户2 (拓远教育) <[email protected]>
sub 2048g/4F435842 2013-05-29
Step 3:导出各自的密钥文件
我们通常需要导出公钥和私钥保存起来,当然公钥是可以满世界的泼洒,但是私钥请务必保存好,否则你的密钥对将会永久性的失去威力。
公钥的导出:
gpg -o keyfilename �Cexport mykeyID
如果没有mykeyID则是备份所有的公钥,-o表示输出到文件keyfilename中,如果加上-a
的参数则输出文本格式( ASCII )的信息,否则输出的是二进制格式信息。
私钥的导出:
gpg -o keyfilename �Cexport-secret-keys mykeyID
如果没有mykeyID则是备份所有的私钥,-o表示输出到文件keyfilename中,如果加上-a
的参数则输出文本格式的信息,否则输出的是二进制格式信息。
user1导出公钥/私钥:
[user1@cmq ~]$ gpg --export -a -o user1pub.asc
[user1@cmq ~]$ gpg --export-secret-keys -a -o user1sec.asc
user2导出公钥/私钥:
[user2@cmq ~]$ gpg --export -a -o user2pub.asc
[user2@cmq ~]$ gpg --export-secret-keys -a -o user2sec.asc
Step 4:相互交换公钥并且导入作为后续通信使用
这里小编使用root用户来帮助交换两个用户的密钥啦
[root@cmq ~]# cd /home/
[root@cmq home]# cp user1/user1pub.asc user2/
[root@cmq home]# cp user2/user2pub.asc user1/
user1导入user2的公钥,并且查看公钥信息
[user1@cmq ~]$ gpg --import user2pub.asc
gpg: 密钥 B1279E8F:公钥“拓远教育用户2 (拓远教育) <[email protected]>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1
user2导入user1的公钥
[user2@cmq ~]$ gpg --import user1pub.asc
gpg: 密钥 56DFD81C:公钥“拓远教育用户1 (拓远教育) <[email protected]>”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1
Step 5:加密通信
user1使用user2的公钥加密文件之后发送给user2
[user1@cmq ~]$ gpg -r "拓远教育用户2 (拓远教育) <[email protected]>" -e user1-to-user2 //-e 加密参数 -r参数指明接收者的标识,也就是接收者的公钥标识
gpg: 4F435842:没有证据表明这把密钥真的属于它所声称的持有者
pub 2048g/4F435842 2013-05-29 拓远教育用户2 (拓远教育) <[email protected]>
主钥指纹: E115 F7A7 1556 AD1D 48CA 7B1A 9677 1EAF B127 9E8F
子钥指纹: 0B47 7E80 DF2A 0493 0D22 3B7A 3ABD 2A38 4F43 5842
这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
己在做什么,您可以在下一个问题回答 yes。
无论如何还是使用这把密钥吗?(y/N)y
加密之后可以查看一下文件看看
[user1@cmq ~]$ vim user1-to-user2.gpg
使用root用户将文件传递给user2并解密看看
[root@cmq home]# cp user1/user1-to-user2.gpg user2/
user2用户解密文件看看,这里肯定是使用user2的私钥解密啦
[user2@cmq ~]$ gpg -o user1-to-user2.txt -d user1-to-user2.gpg //-d是解密参数 -o指明目标文件
您需要输入密码,才能解开这个用户的私钥:“拓远教育用户2 (拓远教育) <[email protected]>”
2048 位的 ELG-E 密钥,钥匙号 4F435842,建立于 2013-05-29 (主钥匙号 B1279E8F)
gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 4F435842、生成于 2013-05-29
“拓远教育用户2 (拓远教育) <[email protected]>”
注:当然这里要输入生成密钥对时输入的密码才行
查看一下解密之后的文件
Step 6:数字签名
这次让user2用户发送签名加密文件给user1
[user2@cmq ~]$ echo "签名加密测试" >> user2-to-user1
[user2@cmq ~]$ gpg -s -r "拓远教育用户1 (拓远教育) <[email protected]>" -e user2-to-user1 //-s参数就是签名啦
您需要输入密码,才能解开这个用户的私钥:“拓远教育用户2 (拓远教育) <[email protected]>”
1024 位的 DSA 密钥,钥匙号 B1279E8F,建立于 2013-05-29
gpg: 400B185A:没有证据表明这把密钥真的属于它所声称的持有者
pub 2048g/400B185A 2013-05-29 拓远教育用户1 (拓远教育) <[email protected]>
主钥指纹: 5B9C 8E4A 5108 8212 F468 7E07 D50A 5AE3 56DF D81C
子钥指纹: 7DEE DAE5 8D95 2CD6 D088 A982 9989 8C04 400B 185A
这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
己在做什么,您可以在下一个问题回答 yes。
无论如何还是使用这把密钥吗?(y/N)y
使用root用户将文件传输给user1
[root@cmq home]# cp user2/user2-to-user1.gpg user1/
user1用户解密文件并查看内容
查看一下文件的内容