分组加密
分组加密是每次处理特定长度的一块数据,这里的一块称为称一个分组。一个分组的比特数就称为分组长度。
DES的分组长度64bit
AES的分组长度128bit
分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时需要对分组密码算法进行迭代,迭代的方法就称为分组密码的模式
分组密码的模式
ECB模式(电子密码模式)
CBC模式(密码分组链接模式)
CFB模式(密文反馈模式)
OFB模式(输出反馈模式)
CTR模式(计数器模式)
ECB模式加密和解密
明文分成N个分组,分组的大小是n比特。如果明文的大小不是分组大小的倍数,需要在文本中添加附件材料。然后用相同的密钥对每一个分组进行加密和解密。
ECB优点
简单、快速、加解密支持并行计算
ECB缺点
明文中的重复排列会反映在密文中
通过删除、替换密文分组可以对明文进行操作
对包含某些比特错误的密文进行解密时,对应的分组会出错
不能抵御重放攻击
CBC模式加密和解密
每一个明文分组在加密之前都要与以前的密文分组进行异或。解密在异或之前完成。
CBC优点
明文的重复排列不会反映在密文中
支持并行运算(仅解密)
CBC缺点
加密不支持并行计算
对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错
如果能够对初始化向量中任意比特进行反转,则解密后得到的明文分组中相应的比特也会被反转
CFB模式加密和解密
CFB实际上是将加密算法DES或AES作为一个密钥流产生器。加密是通过异或一个具有r比特移位寄存器的r比特的明文分组完成的,解密是通过异或一个具有r比特移位寄存器的密文分组来完成。
对每一个分组来说,把移位寄存器Si-1向左移位r比特,并且用Ci-1填满最右边的r比特,得到Si移位寄存器
CFB优点
不需要填充
支持并行运算(仅解密)
CFB缺点
加密不支持并行计算
对包含某些错误比特的密文进行解密时,第一个分组的全部比特以及后一个分组的相应比特会出错
OFB模式加密和解密
OFB同CFB模式一样,也是将加密算法DES或者AES作为密钥流生成器,区别在于OFB的移位寄存器最右边r比特的填充使用的是密钥流T的左r比特
OFB优点
不需要填充
对包含某些错误比特的密文进行解密时,只有名文中相应的比特会出错
OFB缺点
加解密不支持并行计算
密文中单个错误只影响明文中相应的比特