什么是加密?
加密 = 算法 + 钥匙
算法是固定且公开的那么些种,大家都知道, 所以为了保证加密的安全性,就需要保证钥匙的安全性.
常用三种加密算法: 对称算法, 非对称算法, 散列算法.
- 对称算法
加密解密都使用相同的秘钥
速度快,适合对大数据加密
常见类型: DES,3DES,AES
非对称算法
算法公开,可逆的加密算法
用公钥加密,用私钥解密
用私钥加密,用公钥解密
速度慢,适合对小数据加密
常见类型:RSA普遍的加密
秘钥的安全要求很高的话,可以先用RSA加密AES的秘钥散列算法
不可逆加密:MD5、SHA1、SHA256、SHA512
对称算法
一把固定的钥匙
举个例子 : 假如我的原文是:100 ,算法是:+ ,钥匙是200;
那么我的加密过程就是:100 + 200 ,密文就是:300;
加密过程:
原文 | 算法 | 钥匙 | 密文 |
---|---|---|---|
100 | + | 200 | 300 |
解密过程:
密文 | 算法 | 钥匙 | 密文 |
---|---|---|---|
300 | - | 200 | 100 |
非对称算法
有公钥私钥两把不同钥匙:
你有公钥和私钥就是两把钥匙,一般服务器存放私钥, 客户端存放公钥. 私钥加密必须用共钥揭秘,公钥加密必须用私钥才能解密。
举个例子:假如我的原文是:100 ,算法是:+ ,两把钥匙分别是:(250-50),(80+120). 私钥留给客户端(自己).
加密过程:
原文 | 算法 | 私钥 | 密文 |
---|---|---|---|
100 | + | (250-50) | 300 |
解密过程:
密文 | 算法 | 公钥 | 密文 |
---|---|---|---|
300 | - | (80+120) | 100 |
普遍加密
普遍加密出现的原因:公钥加密的时候秘钥也是通过网络发送的,当秘钥被截取后,密文也就会被破解, 但若采用非对称加密,对于大文件,加密耗时太久,效率低下,因而使用非对称加密的方式,只加密对称加密的钥匙,就解决了这个问题.
过程描述:
举个例子:大牛要给小鹿发个视频, 大牛先向小鹿获取小鹿的公钥, 用公钥把自己的对称加密钥匙加密了. 然后把加密后的钥匙,发给小鹿. 把自己的视频用对称加密方式加密后发给小鹿. 小鹿收到加密的钥匙后,用自己的私钥解密大牛大钥匙. 再用大牛的钥匙解密大牛的视频.
上图说明:
两次非对称加密,和散列算法懒得动了,以后更新.
散列算法
散列算法主要用到的加密有MD5加密,MD5加密也叫指纹加密,理论上不能完全保证,加密的唯一性,但这种结果太微乎其微了,所以,MD5加密在实际使用中,值是唯一的。
基于MD5加密的加强版主要有, MD5加盐 , hmc加密, 还有 HMC+时间的MD5
有别于对称加密和非对称加密,MD5加密是不可逆的,也就是说,用MD5加密后的东西,无法被还原
比如用户的支付密码等重要信息,前面的加密虽然可以保证在传输中的安全,但无法阻止公司内部员工监守自盗。
因而采用MD5加密,内部员工也只知道MD5加密后的字符,无法探究密码,从而保证了特别重要,且无需还原数据在传输和使用上的安全性。