加密解密技术系列
AES加密算法原理
00 分钟
2022-12-14
2024-11-11
type
status
date
slug
summary
tags
category
icon
password

AES 加密算法分类

notion image
本篇主要研究AES-128

AES-128 原理分析

参数

Data: 128 位 Key: 128 位 Mode:AES 工作方式,加密或者解密 (CBC 模式和 ECB 模式)

AES 加密算法流程

1、n 个子密钥生成
2、子密钥和data进行密钥加法层运算(xor)
3、密钥加法层的结果进行字节代换层运算
4、进入行位移层运算,移位
5、进入列混淆层运算,乘以混淆矩阵
6、一共进行10轮这样的加密,最后一步不用列混淆,得到密文

AES 算法流程图

notion image

1.0 密钥加法层

这里是将 128 位的明文 x 和 128 位的密钥 k[0]进行一个按字节异或的操作,前提是按照固定的排列顺序
notion image

2.0 字节代换层

需要用到一个 s 盒,如下
notion image
这里的理解如下,输入的字符 1:0011 0001,即(0011,0001),即 (3,1),取到 0xC7
notion image

3.0 行位移——shiftrows

notion image
这里的解释就是,第一行不变,然后第二行左移 1 个字节,第三行左移 2 个字节,第四行左移 3 个字节, 解密时就是一个相反的过程:
notion image

4.0 列混淆——mixcolumn

notion image
这里主要是左乘了一个矩阵,然后将加法和乘法运算利用 GF (128) 下的有限域去求解,转成特殊的运算,从而使得输入的数据再次混淆,这里解密时,用的是正矩阵的逆矩阵:
notion image
加密完毕,最后应该注意要将密文结果从矩阵形式还原成字符串形式输出! 这就是一轮的加密处理操作,当进行到最后一轮的时候,不再进行列混淆的操作了
notion image

5.0 密钥生成

notion image
这里有个 g 函数的处理,作用主要有 2 个
  • 一是增强密钥编排中的非线性
  • 二是消除 aes 中的对称性,可以有效地抵抗分组密码的攻击
    • notion image
notion image
从这里可以看到,k0 就是初始密钥 k,然后(1,4)通过异或运算生成了 5,接着(2,5)生成了 6,以此类推 每 4 个为一个周期生成密钥,一共生成了 16 个密钥 (如果轮数是 16 的话)

6.0 解密

 
notion image
notion image
 
刚好是反向的过程,但是第一次有列混淆的逆向处理操作,最后回到第一轮时就没有了,同时 s 盒是变的,然后其他的都是可以逆向的,难点其实是 S 盒和逆 S 盒的生成,涉及到数论的知识点,我们这里会用即可
 

AES加密算法c语言-CBC模式

AES加密算法c语言-ECB模式

参考于

上一篇
tea、xtea、xxtea算法详解
下一篇
LLVM环境搭建与基本用法