密码学
- 对称加密算法
- 非对称加密算法(公开密钥算法)
- 哈希算法(单向散列算法、杂凑函数)
- 其他
各种算法介绍就不总结了,主要列举一些基本要点,方便对比记忆
对称加密算法
DES
密文长度(每组):64bits
密钥长度:64bits(8bits奇偶校验+56bits有效密钥)
算法流程重要环节:初始置换、轮结构(16轮,E盒扩展、S盒压缩、P盒置换)、逆初始置换、16个子密钥产生器(用于E盒扩展后的模2加密)。
补充:
密文与明文、密文与密钥的相关性:每个密文比特都是明文比特和所有密钥比特的复合函数,并且达到这一要求迭代次数至少为5次。迭代8次后,可认定为输入与输出是不相关。
二重DES
对明文加密使用两个不同密钥K1、K2。因此二重DES有效密钥长度实际为112bits。
三重DES
有四种不同模式:
有效密钥长度为168bits的有两种:
(1)DES-EEE3模式
(2)DES-EDE3模式
(3)DES-EEE2模式
(4)DES-EDE2模式
AES
有128比特的分组长度,并支持128、192和256比特的密钥长度;其前身为Rijndael;AES将分组长度固定为128位,仅支持128、192和256位的密钥长度,分别称为AES-128、AES-192、AES-256。
算法流程重要环节:轮密钥加、字节代替、行位移、列混合。(注意最后一轮没有列混合)。
明文分组长度=128bit | 明文分组长度=192bit | 明文分组长度=256bit | |
---|---|---|---|
密钥长度 | 10轮加密 | 12轮加密 | 14轮加密 |
密钥长度 | 12轮加密 | 12轮加密 | 14轮加密 |
密钥长度 | 14轮加密 | 14轮加密 | 14轮加密 |
对称流式加密RC4算法
采用单密钥,但与分组加密不同,流式加密不是对明文分组后对每个分组进行同样的加密操作,而是根据密钥产生一个伪随机密码流,连续不断地对明文字节流进行处理,产生密文输出流。应用于SSL、WEP。
SM1、SM4、ZUC(国内)
名称 | 密钥长度 | 资源消耗 | 安全性 | 速度 |
---|---|---|---|---|
DES | 56bit | 中 | 低 | 较快 |
3DES | 112bit、168bit | 高 | 中 | 慢 |
AES | 112bit、192bit 、256bit | 低 | 高 | 快 |
非对称加密算法(公开密钥算法)
RSA
既可用于加密,也可用于数字签名;
安全性基于数论中的大数分解困难性。
ECC(椭圆曲线密码体制)
相比RSA等公钥算法,使用较短的密钥长度而能得到相同程度的安全性。
SM2(国内)
(图片来自百度百科)
DSA数字签名算法
借鉴Elgamal和Schnoor算法;
安全性基于离散对数。
名称 | 速度 | 安全性 | 资源耗费 |
---|---|---|---|
RSA | 慢 | 高 | 高 |
ECC | 快 | 高 | 低 |
DSA | 慢 | 高 | \ |
哈希算法(单向散列算法、杂凑函数)
MD5
以512位分组来处理输入的信息,且每一分组划分为16个32位子分组;算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
SHA-1 、SHA-256、SHA-384、SHA-512
分别产生160位、256位、384位和512位的哈希值。
SM3(国内)
名称 | 安全程度 | 运算速度 |
---|---|---|
MD5 | 中 | 快 |
SHA-1 | 高 | 慢 |
SM3 | 与SHA-256相当 | 与SHA-256相当 |
HMAC
用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。及基于密钥的哈希算法的认证协议。
其他
对称密码体制与非对称密码体制
名称 | 速度 | 密钥管理 | 安全性 |
---|---|---|---|
对称算法 | 快 | 较难 | 中 |
非对称算法 | 慢 | 容易 | 高 |
MD(消息摘要)、MAC(消息认证码)、数字签名对比
MD
哈希值,通过哈希算法得出,用于检验数据的完整性;
是不可逆加密算法加密,得到固定长度的哈希值。
MAC(消息认证码)
又称:消息鉴别码、文件消息认证码;
可以验证数据的完整性、可以验证数据确实是由原始发送方发出的。通信双方会以相同的方式生成MAC值,然后进行比较,一旦两个MAC值相同表示MAC验证正确。
数字签名
MAC不能保证消息的不可抵赖性,而数字签名可以保证。
因为数字签名使用的是公钥密码体制,私钥只有发送者自己知道;而MAC使用对称加密,一方能够验证MAC,就能伪造MAC,因为发送方和接收方的秘钥是一样的。
MD | MAC | 数字签名 | |
---|---|---|---|
是否加密 | 不加密 | 加密 | 加密 |
加密算法 | \ | 对称加密算法 | 非对称加密算法 |
是否防抵赖 | 否 | 否 | 是 |