在分组密码中,一般所选用的密码算法都是公开的,加密过程中,只有密钥是保密的。一旦密钥固定,那么可以将加解密过程视为一个映射,例如AES算法,每加密一次,就可以视为128bit到128bit的数据映射。
在实际加密中,一般加密的数据不会只有几百bit,而是几mb,甚至几gb。这样,加密过程就是每加密128bit接着再加密128bit,直至将全部数据加密完。那么,就有几种常见的加密模式。
一. ECB模式
这是最简单最普通的加密模式,就是加密完一轮数据,接着加密下一轮数据,不同轮次之间的数据间无任何关系,如下图所示:
二. CBC模式
这种模式就是上面一轮加密的结果与下一轮的明文进行异或,然后进行加密。因为第一个明文分组没有前面的密文与之异或,故需要一个初始向量IV。
三. CFB模式
将数据进行加密的结果与明文进行异或得到密文,然后再将密文进行加密再与明文异或得到下一个密文,依次类推。同理,在最开始的时候需要一个初始向量IV。
四. OFB模式
将一个初始向量一直加密,每加密一次的结果与明文进行异或得到密文。
五. CTR模式
一直加密计数器,得到加密的结果与明文进行异或得到密文。