此实验需要两个Linux虚拟机

实验步骤:

1.首先我们要看当前的Linux系统上是否已经了gnupg软件,正常系统默认安装此软件;我们输入下列命令查看本机是否安装 。

[root@localhost 桌面]# rpm -qa |grep gnupg

linux 下 postgres 密码_公钥加密


2.生成密钥对:

[root@localhost tmp]# gpg --gen-key

linux 下 postgres 密码_密钥对_02


------此时会出现对话框要求输入私钥保护密码

linux 下 postgres 密码_公钥加密_03


输入:0123456789

linux 下 postgres 密码_密钥对_04


3.查看自己的私钥

[root@localhost tmp]# gpg --list-secret-keys

linux 下 postgres 密码_linux_05


查看自己的公钥

[root@localhost tmp]# gpg --list-keys

linux 下 postgres 密码_公钥加密_06


4.(虚拟机2)用同样的方法在另一台虚拟机上使用gpg生成密钥对(要求写出过程,注意该虚拟机私钥密码应与虚拟机1私钥密码不同以示区分),并使用下列命令导出公钥。

1)查看软件

[root@localhost 桌面]# rpm -qa |grep gnupg

2)进入tmp,生成密钥对

[root@localhost 桌面]# cd /tmp
 [root@localhost tmp]# gpg --gen-key

3)查看自己的私钥

[root@localhost tmp]# gpg --list-secret-keys

4)查看公钥:

[root@localhost tmp]# gpg --list-keys

5)导出虚拟机2的公钥,然后把这个文件传到虚拟机1上

[root@localhost tmp]# gpg --export>machine2.asc

linux 下 postgres 密码_安全_07


5.在虚拟机1使用下列命令将对方的公钥导入

[root@localhost tmp]# gpg --import machine2.asc

linux 下 postgres 密码_密钥对_08


使用gpg --list-keys命令看是否成功导入了对方的公钥

[root@localhost tmp]# gpg --list-keys

linux 下 postgres 密码_linux 下 postgres 密码_09


6.把新导入的公钥签名

[root@localhost tmp]# gpg --sign-key example2:这里example2应是虚拟机2密钥的real name 。

linux 下 postgres 密码_公钥加密_10


此密码为虚拟机1的私钥密码

查看是否正确地对对方公钥签名了

[root@localhost tmp]# gpg --list-sigs

linux 下 postgres 密码_公钥加密_11


采用同样的方法将虚拟机1的公钥导出传到虚拟机2的机器上 。

linux 下 postgres 密码_密钥对_12


linux 下 postgres 密码_密钥对_13


7.用对方的公钥来加密文件了;首先建立一个文件 (虚拟机1的操作)

[root@localhost tmp]# echo “this is example’s file”>encryptfile

linux 下 postgres 密码_linux_14


8.用对方的公钥来加密此文件

[root@localhost tmp]# gpg --encrypt -r example2 encryptfile;使用刚才导入的虚拟机2的公钥进行加密,执行完毕后,会生成加密后的文件encryptfile.gpg。

linux 下 postgres 密码_linux 下 postgres 密码_15


[root@localhost tmp]# cat encryptfile.gpg (查看密文)

密文为乱码,不可读。

linux 下 postgres 密码_linux 下 postgres 密码_16


9.将此加密后的文件传到虚拟机2上,虚拟机2用下命令解密

[root@localhost tmp]# gpg --decrypt encryptfile.gpg

linux 下 postgres 密码_密钥对_17


此时需要输入虚拟机2私钥的密码。

linux 下 postgres 密码_公钥加密_18


10.虚拟机2使用虚拟机1的公钥加密一文件,重复以上过程。

linux 下 postgres 密码_linux 下 postgres 密码_19


此时需要输入虚拟机1私钥的密码(0123456789)。

10.如果需要发送一封既加密又签名的邮件内容,使用下面命令。

#gpg -se -r receiver_public_keyname(刚导入的公钥) filename

linux 下 postgres 密码_linux 下 postgres 密码_20


11.接收者收到这样的信件,只需输入:

#gpg -d filename.gpg