AES基本介绍
字数
1123 字
阅读时间
5 分钟
AES概述
AES(Advanced Encryption Standard)是一种对称加密算法,适用于电子数据的加密。它由美国国家标准与技术研究所(NIST)在2001年采用,取代了原来的DES标准。AES具有高效性、安全性和灵活性,是目前广泛应用的加密标准。
AES的基本特点
- 对称加密:加密和解密使用相同的密钥。
- 块加密:以固定大小(128位,即16字节)的数据块为单位进行加密。
- 支持不同密钥长度:AES支持128位、192位和256位密钥长度(常用的是128位)。
- 基于轮操作:加密和解密分为多轮,每轮由几个步骤组成。
AES加密过程
AES的加密分为以下主要步骤:
初始密钥添加(AddRoundKey):
- 初始状态矩阵(State)与密钥矩阵进行按位异或(XOR)操作。
轮操作(Rounds):
- 每轮包含以下步骤:
- SubBytes:字节替代,将状态矩阵中的每个字节通过S盒(替换表)进行替换。
- ShiftRows:行移位,状态矩阵的每一行循环左移不同的位数。
- MixColumns:列混合,对每列数据进行数学变换(矩阵乘法)。
- AddRoundKey:将状态矩阵与当前轮的子密钥进行按位异或。
- 每轮包含以下步骤:
最终轮(Final Round):
- 不执行MixColumns,仅进行SubBytes、ShiftRows和AddRoundKey。
AES解密过程
AES解密是加密的逆过程,包括:
- 初始密钥添加(AddRoundKey)。
- 逆轮操作(Inverse Rounds):
- InvShiftRows:逆行移位,状态矩阵的每一行循环右移不同的位数。
- InvSubBytes:逆字节替代,使用逆S盒还原字节。
- InvMixColumns:逆列混合,使用逆变换还原每列数据。
- AddRoundKey。
- 最终逆轮(Final Inverse Round):
- 不执行InvMixColumns。
举例说明AES加密和解密过程
场景:加密字符串 "HELLO AES!"
,使用128位密钥 0x2b7e151628aed2a6abf7158809cf4f3c
。
1. 数据准备
- 原始数据:
- 将
"HELLO AES!"
转换为ASCII码并填充到16字节(块大小):[0x48, 0x45, 0x4c, 0x4c, 0x4f, 0x20, 0x41, 0x45, 0x53, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
。
- 将
- 密钥:
0x2b7e151628aed2a6abf7158809cf4f3c
。
2. 状态矩阵初始化
将数据和密钥分别加载为4x4矩阵:
状态矩阵(State):
48 45 4c 4c 4f 20 41 45 53 21 00 00 00 00 00 00
密钥矩阵:
2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
3. 加密过程
(1)初始密钥添加(AddRoundKey)
状态矩阵与密钥矩阵按位异或(XOR):
State XOR Key:
7b 3b 59 5a
67 8e 93 e3
f8 d6 15 88
09 cf 4f 3c
(2)10轮迭代(以第1轮为例):
SubBytes(字节替代):
用S盒替换矩阵中的每个字节。例如:输入字节:0x7b → S盒替换为:0x62 替换后: 62 xx xx xx xx xx xx xx ...
ShiftRows(行移位):
第2行循环左移1个字节,第3行循环左移2个字节,第4行循环左移3个字节。行移位后: 62 ?? ?? ?? ?? ?? ?? ?? ...
MixColumns(列混合):
每列通过特定的矩阵乘法运算进行混合。例如:输入列:[62, xx, xx, xx] → 输出列:[yy, yy, yy, yy]
AddRoundKey(添加子密钥):
当前状态矩阵与该轮的子密钥按位异或。
重复上述步骤共9轮。
(3)最终轮:
只执行SubBytes、ShiftRows和AddRoundKey。
4. 解密过程
加密过程的逆过程。主要步骤是:
- 使用子密钥从最后一轮开始逐步还原。
- 替换顺序:
- InvShiftRows → InvSubBytes → AddRoundKey → InvMixColumns。
5. 输出结果
- 加密后得到密文,例如:
[0x39, 0x25, 0x84, 0x1d, ...]
。 - 解密后还原为原始明文:
"HELLO AES!"
。
总结
AES的设计基于数学理论,包含多个复杂变换,使得即使原文和密钥有很小的差异,密文也会完全不同。AES是目前国际上推荐的对称加密算法,广泛应用于银行交易、无线通信、VPN等领域。
贡献者
freeway348