Liunx下gpg的简单使用

简介:

这篇博客小编就直接简单的讲讲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) <heinrichh@duesseldorf.de>”

真实姓名:拓远教育用户1 //这里是支持中文的

电子邮件地址:tuoyuanuser1@126.com //这里是邮箱地址啦

注释:拓远教育 //注释可要可不要

您正在使用‘utf-8’字符集。

您选定了这个用户标识:

“拓远教育用户1 (拓远教育) <tuoyuanuser1@126.com>”

更改姓名(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 (拓远教育) <tuoyuanuser1@126.com> //这个部分要注意啦,这就是用户的标识了

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) <heinrichh@duesseldorf.de>”

真实姓名:拓远教育用户2

电子邮件地址:tuoyuanuser2@126.com

注释:拓远教育

您正在使用‘utf-8’字符集。

您选定了这个用户标识:

“拓远教育用户2 (拓远教育) <tuoyuanuser2@126.com>”

更改姓名(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 (拓远教育) <tuoyuanuser2@126.com>

sub 2048g/4F435842 2013-05-29

Step 3:导出各自的密钥文件

我们通常需要导出公钥和私钥保存起来,当然公钥是可以满世界的泼洒,但是私钥请务必保存好,否则你的密钥对将会永久性的失去威力。

公钥的导出:

gpg -o keyfilename –export mykeyID

如果没有mykeyID则是备份所有的公钥,-o表示输出到文件keyfilename中,如果加上-a

的参数则输出文本格式( ASCII )的信息,否则输出的是二进制格式信息。

私钥的导出:

gpg -o keyfilename –export-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 (拓远教育) <tuoyuanuser2@126.com>”已导入

gpg: 合计被处理的数量:1

gpg: 已导入:1

clip_image002

user2导入user1的公钥

[user2@cmq ~]$ gpg --import user1pub.asc 

gpg: 密钥 56DFD81C:公钥“拓远教育用户1 (拓远教育) <tuoyuanuser1@126.com>”已导入

gpg: 合计被处理的数量:1

gpg: 已导入:1

clip_image004

Step 5:加密通信

user1使用user2的公钥加密文件之后发送给user2

[user1@cmq ~]$ gpg -r "拓远教育用户2 (拓远教育) <tuoyuanuser2@126.com>" -e user1-to-user2 //-e 加密参数 -r参数指明接收者的标识,也就是接收者的公钥标识

gpg: 4F435842:没有证据表明这把密钥真的属于它所声称的持有者

pub 2048g/4F435842 2013-05-29 拓远教育用户2 (拓远教育) <tuoyuanuser2@126.com>

主钥指纹: 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

clip_image006

使用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 (拓远教育) <tuoyuanuser2@126.com>”

2048 位的 ELG-E 密钥,钥匙号 4F435842,建立于 2013-05-29 (主钥匙号 B1279E8F)

gpg: 由 2048 位的 ELG-E 密钥加密,钥匙号为 4F435842、生成于 2013-05-29

“拓远教育用户2 (拓远教育) <tuoyuanuser2@126.com>”

注:当然这里要输入生成密钥对时输入的密码才行

查看一下解密之后的文件

clip_image008

Step 6:数字签名

这次让user2用户发送签名加密文件给user1

[user2@cmq ~]$ echo "签名加密测试" >> user2-to-user1

[user2@cmq ~]$ gpg -s -r "拓远教育用户1 (拓远教育) <tuoyuanuser1@126.com>" -e user2-to-user1 //-s参数就是签名啦

您需要输入密码,才能解开这个用户的私钥:“拓远教育用户2 (拓远教育) <tuoyuanuser2@126.com>”

1024 位的 DSA 密钥,钥匙号 B1279E8F,建立于 2013-05-29

gpg: 400B185A:没有证据表明这把密钥真的属于它所声称的持有者

pub 2048g/400B185A 2013-05-29 拓远教育用户1 (拓远教育) <tuoyuanuser1@126.com>

主钥指纹: 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用户解密文件并查看内容

clip_image010

查看一下文件的内容

clip_image012


本文转自 chenming421  51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1213362



相关文章
|
Linux 编译器 Windows
CentOS 7终端命令行方式安装FileZilla(★firecat亲测有效★)
CentOS 7终端命令行方式安装FileZilla(★firecat亲测有效★)
1811 0
|
4月前
|
Linux
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
Linux|编译最新版的openssh-server-9.3的rpm包的使用方法(二)
95 0
|
6月前
|
Linux Python
[笔记]Win10+VSCode+CentOS7+SSH+远程开发Python
[笔记]Win10+VSCode+CentOS7+SSH+远程开发Python
|
6月前
|
Linux C语言 C++
[笔记]Win10+VSCode+CentOs7+SSH+gcc 远程开发C++(二)
[笔记]Win10+VSCode+CentOs7+SSH+gcc 远程开发C++(二)
[笔记]Win10+VSCode+CentOs7+SSH+gcc 远程开发C++(二)
|
6月前
|
Linux 网络安全 开发工具
[笔记]Win10+VSCode+CentOs7+SSH+gcc 远程开发C++(一)
[笔记]Win10+VSCode+CentOs7+SSH+gcc 远程开发C++
|
8月前
|
Ubuntu NoSQL Linux
MongoDB安装教程(二进制文件方式安装)—Ubuntu
MongoDB安装教程(二进制文件方式安装)—Ubuntu
211 0
|
9月前
|
Ubuntu Linux Android开发
Termux安装完整版Linux(Ubuntu)详细步骤
Termux是一款在Android系统上运行的终端模拟器,可以让用户在手机上运行Linux命令行工具和应用程序。本文将介绍如何在Termux中安装完整版Linux(Ubuntu)。
1347 0
|
JSON Linux PHP
EasyTask Windows安装方法
EasyTask Windows安装方法
237 0
|
Windows
windows系统上openssh client的离线安装
windows系统上openssh client的离线安装
337 0
windows系统上openssh client的离线安装
|
JavaScript
ubuntu安装及配置nodejs
NodeJS二进制文件安装 1.下载nodejs的二进制文件 百度搜索 nodejs 去官网下载 2.下载后将安装包解压,重命名为合适的文件夹名,并移动到/opt/目录下 tar -xf node-v6.
2300 0