对称加密算法:DES,AES
非对称加密算法:RSA,DSA
md5加密,sha加密都是根据内容进行加密,只要内容不变加密的结果就不会改变,通常用于校验。
gpg加密工具:
提供对称加密,非对称加密,数字签名。
gpg --version #查看版本和提供的加密算法
rpm -qf /usr/bin/gpg #查看由哪个软件包提供gpg命令(gnupg2-2.0.22-4.el7.x86_64)
# 现在有两个用户A,B
# A是发送数据的一方,B是接受数据的一方
1、对称加密:
A:(加密,发送数据)
①:gpg -c ./test.txt #输入命令后进入交互模式进行配置,需要定义一个密码
# 加密以后会产生一个以.gpg结尾的文件,这个文件是加密过的文件
②:B把数据发送给A,可以通过scp发送
B:(进行解密)
gpg -d ./test.txt.gpg > test.txt #这里会使用加密定义的密码
2、非对称加密:(需要使用秘钥对)
过程:
接收方(B)生成秘钥对,把公钥发送给发送方(A)
发送方(A)使用公钥对数据加密,然后把数据发送给接收方(B)
接收方(B)使用私钥对数据进行解密
B:(生成秘钥对,导出公钥,发送公钥)
①:生成秘钥对
mv /etc/random /etc/random.bak
ln -s /dev/urandom /etc/random #使用urandom产生随机数
gpg --gen-key #生成秘钥对,在生成的过程中需要使用到urandom,会让定义一个用户
# 生成的秘钥对在 ~/.gnupg/目录下
# pubring.gpg是公钥
# secring.gpg是私钥
②:导出公钥
gpg --export -a > userB.pub
③:把公钥发送给A
scp ./userB.pub root@192.168.4.50:/
A:(导入公钥,创建数据并加密,发送数据)
①:导入公钥
gpg --import /userB.pub #导入公钥
# 公钥导入后,在~/.gnupg/目录下
②:加密:
gpg -e -r 用户 ./test.txt #加密,用户是创建秘钥对的时候定义的
# 加密以后会产生一个以.gpg结尾的文件,这个文件是加密过的文件
③:发送数据给B
scp ./test.txt.gpg root@192.168.4.5:/
B:(使用秘钥解密)
gpg -d ./test.txt.gpg > test.txt #解密,需要使用密码
3、gpg数字签名:(通过公钥和私钥验证数据完整性)
使用私钥创建签名,用公钥进行验证
B为发送方(已创建秘钥对),A为接收方(已导入公钥)
B:
gpg -b a.txt #创建数字签名,需要使用定义秘钥对时的密码
# 创建签名完毕以后,会产生一个a.txt.sig的签名文件
# B需要提供:a.txt,a.txt.sig
A:
gpg --verify a.txt.sig #使用公钥进行校验
# 如果a.txt没有被修改则验证成功
# 如果a.txt被修改了,则验证失败
写总结的第五十九天!!!