AES 算法原理

AES 的核心概念

在深入原理之前,需要先了解 AES 的几个基本概念:

  • 分组加密:AES 是一种分组密码,它将明文数据分割成固定大小的数据块(block)进行加密。AES 的数据块大小固定为 128 位
  • 密钥长度:AES 支持三种密钥长度:128 位、192 位和 256 位。密钥长度越长,加密强度越高,但计算量也会相应增加
  • 加密轮数:加密过程由一系列重复的“轮”(rounds)组成。不同的密钥长度对应不同的轮数:
    • 128 位密钥:10 轮
    • 192 位密钥:12 轮
    • 256 位密钥:14 轮

加密过程的四大步骤

每一次加密轮都由四个基本操作构成,这些操作保证了加密过程的复杂性

  1. 字节替换(SubBytes) 这是代换操作。AES 使用一个预先定义好的 S-Box(Substitution-Box),将数据块中的每个字节替换成 S-Box 中对应的另一个字节。这个操作是非线性的,目的是为了隐藏明文和密文之间的直接代数关系
  2. 行移位(ShiftRows) 这是置换操作。它将数据块中的每一行进行循环左移。具体来说:
    • 第 0 行保持不变
    • 第 1 行循环左移 1 个字节
    • 第 2 行循环左移 2 个字节
    • 第 3 行循环左移 3 个字节。 这个操作实现了数据字节在不同列之间的扩散,增加了密码的混淆程度
  3. 列混淆(MixColumns) 这也是置换操作。这个步骤对每一列进行矩阵乘法运算。通过这个操作,每一列中的每个字节都会影响到该列中其他字节的值。这进一步加大了数据的扩散,确保了明文中的微小变化能够导致密文的巨大变化
  4. 轮密钥加(AddRoundKey) 这是异或(XOR)操作。在每一轮开始时,都会将当前数据块与本轮的密钥进行异或运算。这个操作将密钥信息注入到数据中,是整个加密过程的关键步骤。每一轮使用的密钥都是由初始密钥经过密钥扩展算法生成的

这四个步骤按顺序重复执行多次,最后在最后一轮会省略列混淆步骤。解密过程则反向执行这四个步骤

Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:11

results matching ""

    No results matching ""