【转】分组对称加密模式:ECB/CBC/CFB/OFB/CTR

标签:
安全密码加密分组杂谈 |
分类: 基础 |
一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,文中提到的ECB和CBC等就是指链加密模式。在C#组件中实现的很多算法和Java都不太兼容,至少我发现RSA和AES/ECB是如此。研究了AES/ECB时发现了这篇文档,图还画的不错,先记下。
对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
http://www.cnblogs.com/images/cnblogs_com/happyhippy/AES1.jpg
http://www.cnblogs.com/images/cnblogs_com/happyhippy/AES2.jpg
二. 分组密码的填充
3.2 CBC模式:
http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html
3.5 CTR模式:
计数模式(CTR模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。对于最后的数据块,可能是长u位的局部数据块,这u位就将用于异或操作,而剩下的b-u位将被丢弃(b表示块的长度)。CTR解密类似。这一系列的计数必须互不相同的。假定计数表示为T1, T2, …, Tn。CTR模式可定义如下:
CTR加密公式如下:
Cj = Pj XOR Ek(Tj)
C*n = P*n XOR MSBu(Ek(Tn)) j = 1,2… n-1;
CTR解密公式如下:
Pj = Cj XOR Ek(Tj)
P*n = C*n XOR MSBu(Ek(Tn)) j = 1,2 … n-1;
AES CTR模式的结构如图5所示。
http://s15/middle/78efec15nc269fb60809e&690
图5 AES CTR的模式结构
Fig 5 Structure of AES CTR Mode
加密方式:密码算法产生一个16 字节的伪随机码块流,伪随机码块与输入的明文进行异或运算后产生密文输出。密文与同样的伪随机码进行异或运算后可以重产生明文。
CTR
■
■
■
■
■
■
■