单向加密算法
单向散列加密算法常用于提取数据,验证数据的完整性,也可以用于密码加密传递存储。
单向加密算法只能用于对数据的加密,无法被解密,其特点为固定长度输出。
MD5
MD5严格意义上来说,不是编码也不是加密,而是摘要算法,也叫做哈希算法和散列算法,它的典型应用是:防止篡改和校验数据。
无论是多长的输入,MD5都会输出长度为128bits的一个串 (通常用16进制表示为32个字符)。需要注意的是:摘要算法是不可以逆的。通过加密后的数据是不能得到原始数据的。
SHA1
SHA1和MD5一样,也是摘要算法,但是SHA1的安全性更强,同时还有SHA256,SHA512等,区别就是长度不一样,越长越安全但是速度越来越慢。对于长度小于2 ^ 64 位的消息,SHA1会产生一个160位的消息摘要。基于MD5、SHA1的信息摘要特性以及不可逆(一般而言),可以被应用在检查文件完整性以及数字签名等场景。
双向加密算法
1.AES 加密算法(双向对称加密)
优点:加密解密都用同一把秘钥,算法是公开的,计算量较单一,加密速度快,加密效率高,适合需要加密大量数据的场景。
缺点:密钥的传输比较麻烦,容易泄露或者被破解。
2.RSA加密算法(双向非对称加密)
RSA算法基于的数论事实
如果将两个大素数相乘,则乘积计算十分容易;但是如果对这个乘积进行质因式分解,却非常困难!
优点:秘钥分为公钥和私钥,公钥公开传递,而私钥只保存在接收方,安全性更高
缺点:加密解密时间花费较长,速度慢,适合对少量重要数据通信的场景。
实际使用中,一般是通过RSA加密AES的密钥,传输到接收方,接收方解密得到AES密钥,然后发送方和接收方用AES密钥来通信。