介绍
加密算法是对二进制进行加密,对称加密得到的结果是二进制。
密码学一般加密以及解密后,会对文件进行MD5。
以下两种加密算法都是可逆的!!
1、对称加密算法 (传统加密算法)
明文 >> 加密 >> 密文
密文 >> 解密 >> 明文
加密和解密都是用同一个密钥!!
密钥的保密工作非常的重要!!
DES
使用非常少,因为强度不够。
3DES
使用更加少,使用3个密钥对相同的数据执行三次加密。密钥管理更加复杂。
AES
目前使用最多!加密强度也非常大!
2、非对称加密(RSA) (现代加密算法)
私钥加密 >>>> 公钥解密!
公钥解密 >>>> 私钥解密!
对称加密方式
对称加密算法有两种加密方式:
1、ECB:电子代码本
坏处:拿到某一块数据破解后,就可以轻松破解全部的数据。
//使用ECB加密方式不加盐,用616263,把abc.txt
加密为msg1.bin
文件
//终端输入的616263,是二进制。如果用代码就是 @”abc”
openssl enc -des-ecb -K 616263 -nosalt -in abc.txt -out -msg1.bin
//查看msg1.bin文件的16(32)进制文件
xxd msg1.bin
2、CBC:密码块链
使用一个密钥和一个iv对数据进行加密
第二块数据的加密,严重依赖上一块数据的加密结果。
可以有效的保证数据的完整性!
单纯的拿到某一块的数据,也无法轻松破解全部的数据。
//使用cbc加密(8位的iv) iv是向量
openssl enc -des-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.txt -out -msg3.bin
非对称加密
RSA加密其实就是简单的乘法运算,做N多次。
因为这种加密的方式,所以它加密的过程非常的缓慢。
加密效率极其的低,不能对大文件进行加密。
数据加密
Tips:HTTPS本身就是RSA加密的通道。
AES-RSA同时加密的方式更加安全!
数据进行AES加密,密钥要保密,密钥通过RSA加密。
服务器是知道密钥的。
客户端的密钥是服务器给的。
服务器把密钥通过RSA加密,(服务器用私钥对这个密钥加密),加密后发给客户端,客户端利用公钥解密,得到这个密钥。
客户端千万不要保存在本地。
客户端每次加密,都要从服务器拿一下加密后的密钥。
别人拿到是没用的,因为没有公钥。
然后客户端再次解密,得到想要的密钥。
客户端用最后得到的这个密钥进行数据的加密,再传给服务器。
数字签名
数据一段一段发送,就是数据本身,消费信息,数据包,数据报文。
如果裸奔直接发送给服务器,要是被拦截,篡改了。服务器也不知道。这就很危险了。所以我们要进行安全操作。
安全操作:
1、数据进行MD5散列
得到一个32位的字符串。(唯一的)
2、对32位字符串进行RSA加密
这个就是数字签名。
3、然后把数据报文和数字签名,一起打包发送给服务器
4、服务器拿到数据,对数据报文进行MD5 (A)
5、服务器解密数字签名,得到MD5 (B)
6、如果A和B 是一样的,说明信息是正确的,没有被篡改过。
(黑客不知道公钥,也无法篡改后再改签名。麻烦的狠。
而且数据包的数据截取一些,无法干更多事情)
Tips:
一个真正的黑客是不会从你的防盗门进你的家的。 哈哈哈。