我们在上文中简单介绍了序列密码(不了解的同学,可以去看看笔者上一篇对序列密码的介绍),知道其最大的缺点是密钥长度与明文长度一致,如果加密80M的明文,就需要80M的密钥,这样在传输与保存上都极为不便。这里,向大家介绍另外一种加密方式,分组加密。
分组密码很好的解决了序列密码的缺点。分组密码是将明文消息编码表示后的数字(简称明文数字)序列, 划分成长度为n个组,每个组有m个字节。每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
分组密码加密固定长度的分组,需要加密的明文长度可能超过了分组密码的分组长度,此时就需要对分组密码算法进行迭代,以便将长明文进行加密,迭代的方法不同,就造成了分组密码的多种模式。
这里介绍分组密码的几个模式:
一、ECB模式(电子密码本模式)
ECB模式是将明文消息分成固定大小的分组,当最后一个分组的内容小于分组长度时,需要特定的数据进行填充以至于长度等于分组长度,每个分组的加密和解密都是独立的,可以进行并行操作。
使用ECB模式加密时,相同的明文分组会转换为相同的密文分组,也就时说,我们可以将其理解为是一个巨大的“明文>密文分组”的对应表,因此ECB模式也称为电子密码本模式,但是安全性较低。
具体的加解密流程如下图:
二、CBC模式(密码分组链接模式)
CBC模式中的第一个分组需要用初始化向量IV(一个随机且长度为一个分组长度单位的比特序列)进行异或操作再进行加密,而后面的每一个分组都要先和前一个分组加密后的密文分组进行异或操作,然后进行加密。加密是连续的,不能进行并行操作。无法对单独