DES
DES算法要求密钥必须是8字节,每8位一个奇偶校验位,实际使用到的只有56bit。
DES算法要求数据长度必须为8个字节的倍数,因此当数据长度不足时必须先进行数据填充。(分组对称加密算法中的数据填充)
两种工作模式,ECB(电子密本方式)和CBC(密文分组链接方式):
DES ECB:就是将数据按照8个字节一段,分别进行DES加密或解密,最后连在一起即可。
DES CBC:在每一段加密或解密的过程中都要与前一段的结果做一次异或操作。同时CBC模式定义了一个特殊的8字节key(称为初始化向量),用以和第一段的结果做异或时用。这种机制使得加密的各段数据之间有了联系。
CBC的加密步骤:
- 8个字节一组分组数据
- 一组数据与前一组的加密结果做异或(若是第一组则是第一组数据与初始化向量做异或)
- 用密钥加密
- 连接各组结果
CBC的解密步骤:
1. 8个字节一组分组
2. 解密 (注意:是先解密,与加密的顺序不同)
3. 与前一组的解密结果做异或(若是第一组则是与初始化向量做异或)
4. 连接各组结果
注意:解密的结果并不一定是我们原来的加密数据,可能还含有数据填充时补的位,注意要把补位去掉。
3DES
3DES算法要求密钥必须是8字节或16字节或24字节,每8字节为单位,一共分割成3个DES的密钥。
三重DES有4种模式:
1. DES-EEE3 模式:该模式中共使用3个不同密钥,顺序使用3次DES加密算法。
2. DES-EDE3 模式:该模式中共使用3个不同密钥,依次用加密—解密—加密。
3. DES-EEE2 模式:该模式中共使用2个不同密钥,顺序使用3次DES加密算法,其中第一次和第三次加密使用的密钥相同。
4. DES-EDE2 模式:该模式中共使用2个不同密钥,依次用加密—解密—加密,其中加密算法使用的密钥相同。
常用的EDE3:
加密的过程可表示为:用密钥1加密->用密钥2解密->用密钥3加密
解密的过程可表示为:用密钥3解密->用密钥2加密->用密钥1解密
当三重密钥均相同时,前两步相互抵消,相当于仅实现了一次加密,因此可实现对普通DES加密算法的兼容。
AES
AES算法要求密钥必须是16字节或24字节或32字节,数据16字节一组分组。bptool中使用的填充方式是零填充。
CKCV: 是指用对全0算AES-CMAC的结果
KCV (SHA256): 是指SHA256的结果
KCV (CMAC): 994604
KCV (AES): 是指对全0做AES加密的结果
发表回复