高级加密标准 (AES)
高级加密标准 (AES) 是美国国家标准与技术研究院 (NIST) 于 2001 年制定的加密标准。它在全球范围内广泛应用于硬件和软件中,用于加密敏感数据。AES 在计算机网络(特别是无线网络)上传输数据时得到广泛使用。
AES 的特性
- AES 是 Rijndael 分组密码的一个子集。
- 它是数据加密标准 (DES) 的后续者,比 DES 更强大、更快。
- 它是一种对称密钥对称分组密码。
- 它操作 128 位(16 字节)数据。
- 密码密钥可以是 128 位、192 位或 256 位。
- 所有计算都在字节而不是位上执行。
- AES 提供了完整的规范和设计细节。
- 它可以使用 C 和 Java 语言实现软件保护。
AES 的操作
高级加密标准的加密过程基于以迭代方式进行的置换和替换操作。16 个字节的数据排列在一个四列四行的矩阵中。在这个矩阵上,AES 执行多轮置换-替换操作。每一轮都使用不同的轮密钥,该轮密钥是由原始 AES 密钥计算出来的。操作的轮数取决于密钥的大小,如下所示:
- 对于 128 位密码密钥,10 轮
- 对于 192 位密码密钥,12 轮
- 对于 256 位密码密钥,14 轮
下图显示了示意图:

上述算法中的加密子过程包括:
密钥扩展 - 使用 Rijndael 分组密码调度从密码密钥计算轮密钥。
预变换 - 这只包含一个过程,即 Add_Round_Key。在这里,对每个数据字节与轮密钥的一个字节执行异或运算。
第 1 轮到第 (N-1) 轮 - 这里执行四个子过程。
Sub_Bytes - 对每个字节执行非线性替换,其中字节根据查找表替换为另一个字节。
Shift_Rows - 执行转置,其中对最后三行进行一定数量的循环移位。
Mix_Columns - 以预定义的方式混合行和列。
Add_Round_Key - 对每个字节与轮密钥的一个字节执行异或运算。
第 N 轮 - 最后一回合包含三个子过程,即:
- Sub_Bytes
- Shift_Rows
- Add_Round_Key
下图显示了 AES 算法第 1 轮中的子过程

广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP