各种主流加密算法解析
最近开始做金融项目,接触了加密算法,在这里做个总结,加深认识。
目前比较常用的加密算法总结起来就是单向加密和双向加密了,很少对吧,理解起来也不算很难。
什么是单向加密?
通俗来说,就是通过对数据进行摘要计算生成密文,密文不可逆推还原。算法代表:MD5、SHA、MAC、CRC等。
什么是双向加密?
而双向加密算法,与单向加密正好相反,就是可以把密文逆推还原成明文,双向加密又分为对称加密和非对称加密。
什么是对称加密?
采用单钥密码系统的加密方法,同一个**可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单**加密。
常用算法:DES、3DES、AES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、Skipjack等。
对称加密的优点:加密计算量小、速度块,适合对大量数据进行加密的场景。
对称加密的缺点:
1、**传输问题:
如上所说,由于对称加密的加密和解密使用的是同一个**,所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于**是否被安全的保管,因此加密者如何把**安全的传递到解密者手里,就成了对称加密面临的关键问题。(比如,我们客户端肯定不能直接存储对称加密的**,因为被反编译之后,**就泄露了,数据安全性就得不到保障,所以实际中我们一般都是客户端向服务端请求对称加密的**,而且**还得用非对称加密加密后再传输。)
2、**管理问题:
再者随着**数量的增多,**的管理问题会逐渐显现出来。比如我们在加密用户的信息时,不可能所有用户都用同一个**加密解密吧,这样的话,一旦**泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个**并且管理,这样**管理的代价也会非常大。
对称加密工作过程简要示意图:
什么是非对称加密?
与对称加密算法不同,非对称加密算法需要两个**:公开**(publickey)和私有**(privatekey)。公开**与私有**是一对,如果用公开**对数据进行加密,只有用对应的私有**才能解密;如果用私有**对数据进行加密,那么只有用对应的公开**才能解密。因为加密和解密使用的是两个不同的**,所以这种算法叫作非对称加密算法。
常用算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
非对称加密的优点:安全性更好。
非对称加密的缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
非对称加密工作过程简要示意图:
工作流程:
1、乙方生成一对**(公钥和私钥)并将公钥向其它方公开。
2、得到该公钥的甲方使用该**对机密信息进行加密后再发送给乙方。
3、乙方再用自己保存的另一把专用**(私钥)对加密后的信息进行解密。乙方只能用其专用**(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法**密文,因为只有乙的私钥才能解密密文。
同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
对称加密和非对称加密简要工作流程图:
本文引用:
作者:意一ineyee
百度百科地址:
对称加密:https://baike.baidu.com/item/%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86/2152944?fr=aladdin
非对称加密:https://baike.baidu.com/item/%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86/9874417