AES加密算法模式对比及注意事项

高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。它是对称密钥加密中最流行的算法之一。

这个算法支持多种模式的加密,包括ECB、CBC、OFB、CFB、CRT、XTS等。

以下是这些模式的一些简单的区别:ECB不能用同一个key加密多个block,否则很容易被攻击。CBC, OFB, CFB差不多,但OFB/CFB比较好,因为只需要加密不需要解密,可以节省代码空间。CTR适用于并行计算获得较好的速度。XTS通常用于加密随机访问的数据,例如硬盘和内存。

需要特别注意的是ECB只能用于加密一个block,XTS只能用来加密随机访问数据而不能用于加密流(stream)。

同时,不同的加密中要使用不同的IV,并且是随机的IV。

在python中可以使用pycrypto库来实现AES加密。

代码也十分简单:

AES.new(key, AES.MODE_CFB, iv).encrypt('zhetenga')。

2013年11月06日