算法简介
算法简介
摘要加密算法
摘要算法是一种能产生特殊输出格式的算法。
这种算法的特点是:无论用户输入什么长度的原始数据,经过计算后输出的密文都是固定长度的,这种算法的原理是根据一定的运算规则对原数据进行某种形式的提取,这种提取就是摘要。
被摘要的数据内容与原数据有密切联系,只要原数据稍有改变,输出的“摘要”便完全不同。
因此,基于这种原理的算法便能对数据完整性提供较为健全的保障。
单向算法,密文长度固定
但是,由于输出的密文是提取原数据经过处理的定长值,所以它已经不能还原为原数据,即消息摘要算法是不可逆的,理论上无法通过反向运算取得原数据内容,因此它通常只能被用来做数据完整性验证。
如今常用的“消息摘要”算法经历了多年验证发展而保留下来的算法已经不多,这其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等。
常用的摘要算法主要有MD5和SHA1。MD5的输出结果为16字节(128位),SHA-1 的输出结果为20字节(160位)。
常见算法:MD2、MD4、MD5 、SHA、HMAC、HMAC-MD5、HMAC-SHA1、RIPEMD160,国密SM3。
对称加密算法
对称算法使用一个密钥。
给定一个明文和一个密钥, 加密产生密文,其长度和明文大致相同。解密时,使用读密钥与加密密钥相同。
对称算法主要有四种加密模式。
常见算法:DES、3DES、AES、RC2、RC4、SM4。
非对称加密算法/公钥算法
也叫非对称加密算法, 在公钥密码系统中, 加密和解密使用的是不同的密钥,这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。
这使得通信双方无需事先交换密钥就可进行保密通信。
其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。
常见算法:RSA、DSA、Diffie-Hellman密钥交换 和 椭圆曲线密码体制(ECC)。