一、对称算法简介
加密算法大致可以分为对称算法、非对称算法、还有就是散列算法
加密和解密都使用相同的秘钥
速度快,适合对大数据进行加密
比较常见的有DES 3DES AES
DES全称为Data Encryption Standard,也就是数据加密标准
3DES对每个数据块应用三次DES加密算法,这样强度就增强了。
AES全称Advanced Encryption Standard,苹果的钥匙串访问就是采用了AES加密算法
非对称算法
算法是公开的,可逆的加密算法
我们可以用服务器传过来的公钥进行加密,然后提交给服务器,服务器再用私钥进行解密
当然也可以把私钥进行加密,然后再用公钥进行解密
速度慢,适合对小数据进行加密
比如说RSA算法,RSA算法可以一个私钥对应多个公钥
如果秘钥的安全要求高的话,我们可以用RSA加密AES的秘钥,其实就是这样的过程
就是服务器比如说把公钥传给你,你通过公钥把你的AES中的秘钥进行加密,然后再传给服务器,这样服务器只需要去解密你AES的秘钥,然后再通过AES的秘钥进行解密数据就可以了。这样的话既保证了安全性速度又提升了
还有一个就是散列算法也就做不可逆加密
比如说MD5、SHA1、SHA256、SHA512算法
举个例子MD5的算法其实可以理解成这样子,从源数据中进行抽取几个数据,抽取不是随机的是有算法的,有了二进制数据我们就可以把二进制数据通过相应的方法进行加密。
比如说密码的存储就可以用MD5进行加密。还有比如说一些下载网站下载文件的旁边有个MD5值,我们可以自己验证从网络上下载的文件是否在下载的过程中被修改了,MD5对相同的数据加密,得到的结果是一样的,对不同的数据进行加密,得到的结果是定长的也就是32个字符。经过MD5加密是不允许反算的。
二、总结
对称加密算法的主要优点是在于速度快,通常比非对称加密算法快100倍以上。
对称加密算法的安全使用的要求:
需要有一个强加密算法,如果你秘钥和密文都被截获,如果你加密算法不强很容易被破解。
密钥的传递需要有一个安全的方式,也就是要求发送者要把密钥通过安全的方式告诉接受者,不要让第三方知道。
对称密钥算法的优点是加解密速度快,但是要考虑密钥的分发问题
非对称密钥算法,密钥的安全性高,加解密的时候速度比较慢。
简单的介绍下两种加密的方式,一种是CBC还有一种是ECB
ECB:电子密本形式这个模式就是把一段数据拆分成很多块,然后再分别的去加密。
CBC:就是密文分组链接方式,是将前一个密文分组与当前明文分组的内容混合起来进行加密的,也就是说后一个的加密结果是依赖于前一个加密结果的。需要一个初始化向量,在第一个加密的时候会用到。使用CBC方式加密的好处就是可以保证密文的完整性,如果一个地方被篡改了,那么后面的就都会被篡改。
ECB的方式有利于并行计算,而CBC不利于并行计算