分组密码是每次只能处理特定长度的一块数据的算法,每块都是一个分组,分组的比特数就称为分组长度,但是当加密的内容超过分组密码的分组长度时,就要对分组密码算法进行迭代,迭代的方法称为分组密码的模式。
例如:DES和AES都是分组密码算法,DES和三重DES的分组长度都是64比特,AES的分组长度为128比特。
分组密码的模式主要有以下五种:
ECB模式(电子密码本模式)
ECB模式是将明文消息分成固定大小的分组,当最后一个分组的内容小于分组长度时,需要用特定的数据进行填充以至于长度等于分组长度,每个分组的加密和解密都是独立的,可以进行并行操作,但是安全性较低。
CBC模式(密码分组链接模式)
CBC模式中的第一个分组需要用初始化向量IV(一个随机的且长度为一个分组长度的比特序列)进行异或操作再进行加密,而后面的每一个分组都要先和前一个分组加密后的密文分组进行异或操作,然后再加密。加密是连续的,不能进行并行操作。
CFB模式(密文反馈模式)
CFB模式是将前一个分组的密文加密后和当前分组的明文进行异或操作生成当前分组的密文,第一个明文分组通过初始化向量lV进行加密再与之进行异或操作得到第一个密文分组。
OFB模式(输出反馈模式)
OFB模式是通过将明文分组和密码算法的输出进行异或操作来产生密文分组的,也需要使用初始化向量(IV)
CTR模式(计数器模式)
在CTR模式中,每次加密时都会生成一个不同的值来作为计数器的初始值,每个分组对应一个逐次累加的计数器,通过对计数器进行加密来生成密钥流,再将密钥流与明文分组进行异或操作得到密文分组,