这篇文章上次修改于 2019 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

分组密码的模式

分组密码与分流密码

分组密码(block cipher) 每次只能处理一定长度的一块数据的一类密码算法。一块称为分组(block),一个分组的长度称为分组长度(block length)
DES 和三重DES 的分组长度都是64bit
AES 分组长度是128
流密码(stream cipher) : 对数据流进行连续处理的一类密码算法,流密码一般以1bit, 8bit,32bit为单位进行加密和解密
只有一次性密码本是流密码

什么是模式(mode)

ECB (Electronic CodeBook mode):电子密码本模式, 将明文直接分割成多个分组并逐个加密的方法。(不要使用)
CBC (Cipher Block Chaining mode): 密码分组链接模式
CFB (Cipher FeedBack mode): 密文反馈模式
OFB (Output FeedBack mode): 输出反馈模式
CTR (counter mode) : 计数器模式

明文分组与密文分组

明文分组: 分组密码算法中作为加密对象的明文,明文分组的长度与分组密码算法的分组长度相等。
密文分组: 分组密码算法将明文分组加密之后产生的密文。

主动攻击者Mallory (malicious, 恶意的)

ECB模式

将明文分组加密后的结果直接成为密文分组。

CBC模式

首先将明文分组与前一个密文分组进行XOR运算,然后进行加密
CBC模式的加密
CBC模式的解密
初始化向量:由于加密第一个明文分组时不存在“前一个密文分组” 一次需要事先准备一个长度为一个分组的比特序列代替,这个序列称为初始化向量(Initialization Vector) 简称IV。一般每次加密都会随机产生一个不同的比特序列作为初始化向量。

CFB 模式(cipher FeedBack 密文反馈模式)

CFB模式的加密CFB模式的解密

OFB模式(Output-Feedback 输出反馈模式)

OFB模式的加密OFB模式的解密
分组密码对比表