分组加密, 算法模式(ECB CBC CFB OFB)

块加密

块加密,英文Block Cyper,又称分组加密,是一种常见的对称加密,具有代表性的块加密有DES,AES,3DES等。块加密的工作模式允许使用同一个分组密码**对多于一块的数据进行加密,并保证其安全性。

ECB模式

又称电子密码本模式:Electronic code book,是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的**单独加密,解密同理。

分组加密, 算法模式(ECB CBC CFB OFB)

分组加密, 算法模式(ECB CBC CFB OFB)

缺点在于同样的明文块会被加密成相同的密文块;因此,它不能很好的隐藏数据模式。在某些场合,这种方法不能提供严格的数据保密性,因此并不推荐用于密码协议中。

CBC模式

密码分组链接(CBC,Cipher-block chaining)模式,由IBM于1976年发明,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。

分组加密, 算法模式(ECB CBC CFB OFB)

分组加密, 算法模式(ECB CBC CFB OFB)

CBC是最为常用的工作模式。它的主要缺点在于加密过程是串行的,无法被并行化,而且消息必须被填充到块大小的整数倍。在加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。因此,解密过程可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。

CFB

密文反馈(CFB,Cipher feedback)模式与ECB和CBC模式只能够加密块数据不同,可以将块密码变为自同步的流密码;CFB的解密过程几乎就是颠倒的CBC的加密过程。

分组加密, 算法模式(ECB CBC CFB OFB)

分组加密, 算法模式(ECB CBC CFB OFB)

注意:CFB、OFB和CTR模式中解密也都是用的加密器而非解密器。
CFB的加密工作分为两部分:
1.   将一前段加密得到的密文再加密;
2.   将第1步加密得到的数据与当前段的明文异或。
由于加密流程和解密流程中被块加密器加密的数据是前一段密文,因此即使明文数据的长度不是加密块大小的整数倍也是不需要填充的,这保证了数据长度在加密前后是相同的。

OFB

OFB模式(输出反馈:Output feedback),OFB是先用块加密器生成**流(Keystream),然后再将**流与明文流异或得到密文流,解密是先用块加密器生成**流,再将**流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。

分组加密, 算法模式(ECB CBC CFB OFB)

分组加密, 算法模式(ECB CBC CFB OFB)

OFB与CFB一样都非常适合对流数据的加密,OFB由于加密和解密都依赖与前一段数据,所以加密和解密都不能并行。