加密算法分类:常用加密算法可以分为单向加密和双向加密: 前端加解密种类:深入浅出HTTPS
- 单向加密:只提供单向加密不能解密,不可逆的过程。通常用来存储用户名和密码,直接从前端传输来存储到数据库中。如MD5
- 双向加密:又分为对称性加密算法和非对称性加密算法。
一 对称加密:是指加密和解密都用同一份密钥。如下图所示:
AES 的意思是“高级加密标准”(Advanced Encryption Standard),密钥长度可以是 128、192 或 256。它是 DES(Data Encryption Standard)算法的替代者,安全强度很高,性能也很好,而且有的硬件还会做特殊优化,所以非常流行,是应用最广泛的对称加密算法。DES对称加密 AES对称加密
二 非对称加密:对应于一对密钥,称为私钥和公钥,用私钥加密后需要用公钥解密,用公钥加密后需要用私钥解密。如下图所示:
非对称加密算法的设计要比对称算法难得多,在 TLS 里只有很少的几种,比如 DH、DSA、RSA、ECC 等。RSA非对称加密
对称加密与非对称加密区别:对称加密的优点是运算速度快,缺点是互联网环境下无法将密钥安全的传送给对方。非对称加密的优点是可以安全的将公钥传递给对方,但是运算速度慢。
三 MD5(Message-Digest-Algorithm)加密算法:属于Hash算法一代,是一种单向加密算法,可以将输入的信息加密转换为128位固定长度的散列值,用于检验数据传输过程中的完整性。
功能:
- 输入任意长度的信息,经过处理,输出都是128位的信息值
- 不同的输入对应的输出一定不同,保证唯一性
争议:
- MD5属不属于加密算法,因为只可以加密,无法获得密码原文,只能属于算法。
- 另一种观点,正因为看不到原文,使得原文得到加密处理。
- 个人观点:对于公司的用户,采用MD5是可以放心的,第一,对于黑色截获MD5后很难破解。第二,对于商家内部,只能获得用户加密后的密文,无法看到用户的真实密码,这也是对用户信息的一定保护。
MD5的优势:
- 防止被篡改,在传输过程中一旦被串改,那么计算出的MD5值一定不同。
- 计算速度快。加密速度快,不需要秘钥。
- 检查文件的完整性,一旦文件被更改,MD5值也是不同的。
- 防止看到明文,公司存放密码存放的是MD5值。
- 防止抵赖,用于数字签名,一旦用户的文件被第三方MD5加密,若以后A说这个文件不是他写的,那么当用文件MD5后获得的签名一致,可以确认。
MD5的实现原理:
- 填充:将输入信息进行512求余分组,若不等于448,那么进行填充 1 和0,一个1 N个0。最后的数据就为N*512+448
- 记录信息长度:将得到的信息用64位存储填充之前的信息长度,这样448+64=512,总信息为N+1个512
- 以四个常数ABCD与每组512位进行函数运算,最后输出的结果就是4组32位的常数。拼接得到MD5码
MD5的缺点:
- 作为一种散列算法,虽然很难发生散列碰撞,但是经过证实,仍然存在两种不同数据会发生碰撞。
- MD5的安全性:将用户的密码直接MD5后存储在数据库是不安全的。第一,用户普遍习惯用容易记忆的密码,生日,手机号等,黑客容易破译此类密码。这也是加盐值的一个原因。第二,直接MD5存入数据库,若数据库被破解,通过MD5反查会查到密码,需要随机盐值的配合。
- 考虑到多数人所使用的密码为常见的组合,攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合,然后与数据库中的摘要进行比对即可获得对应的密码。这个摘要组合也被称为rainbow table。
四 Https加密原理:https://zhuanlan.zhihu.com/p/43789231
- 对称加密+非对称加密方式:可以被中间人攻击(浏览器无法确认收到的公钥是不是网站自己的)
- 数字证书:CA机构颁发的“身份证”就是数字证书。防止数字证书被篡改就是数字签名。
相关阅读:
AES加密: 当模式是CBC的时候必须设置偏移量。AES加解密使用方法理解:https://blog.csdn.net/vieri_32/article/details/48345023