高级加密标准 (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 轮中的子过程

更新于:2020年1月9日

2K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.