学而时习之,不亦乐乎,大家好,我是张杰。今天来讲一下常用的加密算法
常用的加密算法大类分三种:对称加密和非对称性加密、线性散列算法
一、对称加密(AES、DES、3DES)
1、特点
可逆:加密和解密用一样的密钥,以前端和后端消息传递为例,前端和后端约定密钥为123456,加密模式为AA,然后他们相互传递消息的时候先加密,对方收到解密就可以了,和原来战争时期的电台差不多,有密码本就可以了。
2、用途
广泛应用
3、优点
算法公开,计算量小,加密速度快,加密效率高
4、缺点
密钥相对于非对称加密容易泄漏。以上面的例子来说,密码本被别人拿到了就可以看到消息明文了。
经典加密算法有三种:
DES(Data Encryption Standard):数据加密标准(现在用的比较少,因为它的加密强度不够,能够暴力破解)
3DES:原理和DES几乎是一样的,只是使用3个密钥,对相同的数据执行三次加密,增强加密强度。(缺点:要维护3个密钥,大大增加了维护成本)
AES(Advanced Encryption Standard):高级加密标准,目前美国国家安全局使用的,苹果的钥匙串访问采用的就AES加密。是现在公认的最安全的加密方式,是对称密钥加密中最流行的算法。
二、非对称性加密(RSA、DSA、ECC)
1、特点
也可逆:加密用公钥,解密用私钥,以前端和后端消息传递为例,前端和后端约定加密模式为AA,然后他们各自生成一对公钥和私钥,然后各自将公钥发给对方,前端给后端发消息的时候用后端给的公钥加密,后端收到消息用自己的私钥来解密。后端给前端发消息的时候用前端给的公钥加密,前端收到消息用自己的私钥来解密。这时候私钥只掌握在解密人的手里,不容易泄漏。
2、用途
广泛应用
3、优点
安全性高,不易被破解
4、缺点
加密速度慢。
RSA应用场景:
由于RSA算法的加密解密速度要比对称算法速度慢很多,在实际应用中,通常采取
数据本身的加密和解密使用对称加密算法(AES)。
用RSA算法加密并传输对称算法所需的密钥。
三、线性散列算法(MD5、SHA1、HMAC)
1、特点
不可逆,个人理解为半加密,也叫一种摘文
特别讲一下MD5加密的特点:
不可逆运算
对相同的数据加密,得到的结果是一样的(也就是复制)。
抗修改性 : 信息“指纹”,对原数据进行任何改动,哪怕只修改一个字节,所得到的 MD5 值都有很大区别.
弱抗碰撞 : 已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的.
强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是非常困难的
MD5 应用
常用在不可还原的密码存储、信息完整性校验等。例如账号密码,数字签名
安全性:虽然是不可逆的,但是有破解网站(md5破解网站破解),其原理是收集了大量的md5信息,进行反向匹配,数值对应上了就是破解。
实际应用增加安全性:加“盐”
可以加个“盐”试试,“盐”就是一串比较复杂的字符串,尽量放在中部,这样不容易破解,加盐的目的是加强加密的复杂度,这么破解起来就更加麻烦,当然这个“盐”越长越复杂,加密后破解起来就越麻烦,耗时更长。当然加固定的“盐”还是有太多不安全的因素,可以看出没有百分百的安全,只能达到相对安全(破解成本 > 破解利润),所以一些金融的app、网站等加密比较高。
后面还要继续补充