密码学入门(3):分组密码的模式
DES和AES都属于分组密码,它们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码迭代的方法就称为分组密码的“模式”。
分组密码与流密码
- 分组密码(block cipher)每次只能处理特定长度的一块数据,这里的“一块”就称为分组(block),一个分组的比特数就称为分组长度(block length)。
- 流密码(stream cipher)是对数据流进行连续处理的一类密码算法。流密码中一般以 1 1 1比特、 8 8 8比特、 32 32 32比特等为单位进行加密和解密。
- 分组密码处理完一个分组就结束了,因此不需要通过内部状态来记录加密的进度;而流密码是对一串数据流进行连续处理,因此需要保持内部状态。
- 在之前的算法中,只有一次性密码本属于流密码,DES、三重DES、AES(Rijndael)等大多数对称密码算法都属于分组密码。
ECB模式
ECB模式(Electronic CodeBook)非常简单,但由于存在弱点因此通常不会被使用。ECB将明文分组加密后的结果直接变成密文分组:
- 当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充