高级加密标准
高级加密标准
有限域算术
- AES中所有运算都是在域GF(28)中,域GF(28)中的多项式与8位二进制一一对应
- AES中素多项式m(x)=x^8 + x4+x3+x+1
AES的结构
- 明文长度为128位,即16字节,即4字
- 密钥长度可以为16字节、24字节、32字节
- 明文分组被描述为4*4字节方阵,并在加解密各个阶段被修改
- 128位密钥也被描述4*4位方阵
- 加密算法由N+1轮组成
- N的大小依赖于密钥长度:16字节时,N=10;24字节时,N = 12;32字节时,N=14;
- 第0轮为初始变换,其操作为轮钥密加
- 第1轮到N-1轮为常规轮,每轮包含相同4步,包括字节代替、行移位、列混淆、轮秘钥加
- 第N轮包括字节代替、行移位、轮秘钥加
AES算法的各个步骤
-
字节代替变换
-
AES定义了一个S盒,它是由16*16个字节的矩阵,包含了8位所能表示的256个数的置换
-
状态中每个字节按照如下方式映射:把该字节的高位作为行值,低4位作为列值作为索引取出S盒中对应位置元素作为输出
-
-
S盒的构建
-
-
行位移变换
- 正向行位移变换
- 状态的第一行保持不变
- 第二行循环左移1字节
- 第三行循环左移2字节
- 第四行循环左移3字节
- 逆向行位移变换
- 状态的第一行保持不变
- 第二行循环右移1字节
- 第三行循环右移2字节
- 第四行循环右移3字节
- 正向行位移变换
-
列混淆变换
- 正向列混淆变换:对每列独立地进行操作,每列中的每个字节被映射成一个新值,该值由该列中的4个字节通过函数变换得到
- 逆列混淆变换
-
轮秘钥加变换
- 12位状态与128位轮秘钥XOR
-
AES的密钥扩展
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库