六、加密与解密
检查文件的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>”