1、DES和AES都属于分组密码,它们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的“模式”。

分组密码有很多种模式,如果模式的选择不恰当,就无法保证机密性。例如,如果使用ECB模式,明文中的一些规律就可以通过密文被识别出来。

分组密码的主要模式(ECB、CBC、CFB、OFB、CTR),最后再来考察一下到底应该使用哪一种模式。

 2. 分组密码

分组密码(blockcipher)是每次只能处理特定长度的一块数据的一类密码算法,这里的一块”就称为分组(block)。此外,一个分组的比特数就称为分组长度(blocklength)。

例如,DES和三重DES的分组长度都是64比特。这些密码算法一次只能加密64比特的明文.并生成64比特的密文。
AES的分组长度可以从128比特、192比特和256比特中进行选择。当选择128比特的分组长度时,AES一次可加密128比特的明文,并生成128比特的密文。

3. 模式

分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为分组密码的模式(mode)。

话说到这里,很多读者可能会说:“如果明文很长的话,将明文分割成若干个分组再逐个加密不就好了吗?”事实上可没有那么简单。将明文分割成多个分组并逐个加密的方法称为ECB模式,这种模式具有很大的弱点(稍后讲解)。对密码不是很了解的程序员在编写加密软件时经常会使用ECB模式,但这样做会在不经意间产生安全漏洞,**因此大家要记住千万不能使用ECB模式。

模式有很多种类,分组密码的主要模式有以下5种:
ECB模式:Electronic Code Book mode(电子密码本模式)->不常用淘汰
CBC模式:Cipher Block Chaining mode(密文分组链接模式)->常用
CFB模式:Cipher FeedBack mode(密文反馈模式)->也有使用,建议使用CTR
OFB模式:Output FeedBack mode(输出反馈模式)->也有使用,建议使用CTR
CTR模式:CounTeR mode(计数器模式)->建议使用

明文分组和密文分组

明文分组: 是指分组密码算法中作为加密对象的明文。明文分组的长度与分组密码算法的分组长度是相等的。
密文分组: 是指使用分组密码算法将明文分组加密之后所生成的密文。

为了避免图示变得复杂,以后我们将“用分组密码算法加密”简写为“加密”,并省略对密钥的描述。

 

密码算法与分组模式的关系:

五种分组模式总结★重要★★