六、加密与解密

检查文件的MD5校验和

[root@proxy ~]# cp file1.txt  file2.txt

[root@proxy ~]# md5sum file?.txt                  //文件内容一致,则校验和也不变

b92aa0f8aa5d5af5a47c6896283f3536  file1.txt

b92aa0f8aa5d5af5a47c6896283f3536  file2.txt

[root@proxy ~]# echo "x" >> file1.txt

[root@proxy ~]# md5sum file?.txt                //对文件内容稍作改动,再次检查校验和,会发现校验和已大不相同

6be3efe71d8b4b1ed34ac45f4edd2ba7  file1.txt

vimdiff  a.txt   b.txt   //同时打开两个文件,并对比两个文件不同的地方

GPG(GnuPG)对称加密

[root@proxy ~]# yum -y install gnupg2            //安装软件gnupg2

[root@proxy ~]# gpg --version                    //查看版本

gpg (GnuPG) 2.0.22

[root@proxy ~]# gpg -c file2.txt   //对称加密,根据提示输入两次口令生成加密文件,后缀为 .gpg

[root@proxy ~]# cat file2.txt.gpg                    //查看加密数据为乱码

[root@proxy ~]# gpg -d file2.txt.gpg > file2.txt  //解密后保存,根据提示输入密码(如果已经解密过,会记录密码再次解密不用输密码)

[root@proxy ~]# cat file2.txt                      //查看解密后的文件

GPG非对称加密

非对称加密/解密文件时,UserA生成私钥与公钥,并把公钥发送给UserB,UserB使用公钥加密数据,并把加密后的数据传给UserA,UserA最后使用自己的私钥解密数据。当[root@client ~]#这个enter不换行使用 reset恢复

A:

[root@client ~]# gpg --gen-key    //接收方UserA创建自己的公钥、私钥,按提示操作

[root@client ~]# gpg --list-keys    //查看公钥,公钥、私钥信息分别保存在~/.gnupg/pubring.gpg和secring.gpg文件内

/root/.gnupg/pubring.gpg

------------------------------

pub   2048R/421C9354 2017-08-16

uid                  UserA (User A) <UserA@tarena.com>

sub   2048R/9FA3AD25 2017-08-16

[root@client ~]# gpg -a --export UserA > /tmp/UserA.pub   //--export导出密钥,后面跟姓名  -a密钥存储为ASCII格式

[root@client ~]# scp /tmp/UserA.pub 192.168.4.5:/tmp/     //将密钥传给UserB

B:

[root@proxy ~]# gpg --import /tmp/UserA.pub    //--import导入发送方的公钥信息,以便在加密文件时指定对应的公钥

[root@proxy ~]# echo "I love you ." > love.txt

[root@proxy ~]# gpg  -e  -r  UserA  love.txt     //使用此密钥加密文件,-e 加密 -r 指定密钥后面跟密钥创建时的用户名,

[root@proxy ~]# scp love.txt.gpg  192.168.4.100:/root    //加密的数据传给UserA

A:

[root@client ~]# gpg -d love.txt.gpg > love.txt     //私钥解密文件

[root@client ~]# cat love.txt                      //获得解密后的文件内容

GPG检查数据来源(公钥验证私钥签名)

gpg --default-key  密钥 -b 文件               //指定密钥签名(不指定默认第一个密钥)

A:

[root@client ~]# tar zcf log.tar /var/log              //建立测试软件包

[root@client ~]# gpg -b log.tar                      //创建分离式数字签名

[root@client ~]# ls -lh log.tar*

-rw-rw-r--. 1 root root 170 8月  17 21:18 log.tar

-rw-rw-r--. 1 root root 287 8月  17 21:22 log.tar.sig

[root@client ~]# scp log.tar* 192.168.4.5:/root        //将签名文件与签名传给UserB

B:

[root@proxy ~]# gpg --verify log.tar.sig log.tar     //verify 核实

gpg:于2028年06月07日 星期六 23时23分23秒 CST 创建的签名,使用 RSA,钥匙号 421C9354

gpg: 完好的签名,来自于“UserA (UserA) <UserA@tarena.com>”

posted @ 2021-06-15 15:21  落樰兂痕  阅读(57)  评论(0编辑  收藏  举报