AES 加密算法原理〔图文〕 随着对称密码的开展,DES 数据加密标准算法由于密钥长度较小(56 位),已经不适应当今分布式开放网络对数据加密平安性的要求,因此 1997 年 NIST 公开征集新的数据加密标准,即 AES[1]。经过三轮的筛选,比利时 Joan Daeman 和Vincent Rijmen 提交的 Rijndael 算法被提议为 AES 的最终算法。此算法将成为美国新的数据加密标准而被广泛应用在各个领域中。尽管人们对 AES 还有不同的看法,但总体来说,AES 作为新一代的数据加密标准会聚了强平安性、高性能、高效率、易用和灵活等优点。AES 设计有三个密钥长度:128,192,256 位,相对而言,AES 的 128 密钥比 DES 的 56 密钥强 1021 倍[2]。AES 算法主要包括三个方面:轮变化、圈数和密钥扩展。 AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用 128、192 和 256 位密钥,并且用 128 位〔16 字节〕分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用一样的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据一样。迭代加密使用一个循环结构,在该循环中重复置换〔permutations 〕和替换(substitutions〕输入数据。Figure 1 显示了 AES 用 192 位密钥对一个 16 位字节数据块进展加密和解密的情形。Figure 1 局部数据 AES 算法概述 AES 算法是基于置换和代替的。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES 使用了几种不同的技术来实现置换和替换。为了说明这些技术,让我们用 Figure 1 所示的数据讨论一个具体的 AES 加密例子。下面是你要加密的 128 位值以与它们对应的索引数组: 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 192 位密钥的值是: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 170 1 2 3 4 5 67 8 9 10 1112 13 14 15 16 17 18 19 20 21 22 23 Figure 2 S-盒〔 Sbox 〕 当 AES 的构造函数〔constructor〕被调用时,用于加密方法的两个表被初始化。第一个表是代替盒称为 S-盒。它是一个 16×16 的矩阵。S-盒的前五行和前五列如 Figure 2 所示。在幕后,加密例程猎取该密钥数组并用它来生成一个名为 w[]的密...