AES 加密算法(理解篇)
AES加密算法
截图出处来自b站可厉害的土豆
白盒AES算法详解(一)-密码应用-看雪-安全社区|安全招聘|kanxue.com
(其他的)
AES是分组加密算法
名为长度固定为128位,密钥长度可以是128(16字节),192,256位
每增加64位会多增加2次循环,128位循环10轮,192为12轮,256为14轮
整个过程大约为如下操作
初始变化:
字节代换
先把明文按照上图排列以后与相同排列的子密钥局长分别异或
根据异或以后表中的数字对照S盒进行字节替换(读取方法类似 一 九)
得到替换完的结果
行移位
得到效果
列混合
这是一种很特殊的运算,就是把我们经过上面一系列变换得到的矩阵再左乘一个固定的矩阵得到结果
轮密钥加
将列混合得到的矩阵和子密钥矩阵进行异或得到结果
子密钥矩阵得到方式:
将最开始的16个字节的子密钥矩阵经过密钥扩展可以得到10个轮密钥
密钥扩展(补充)
非4倍数
如果不是4的倍数直接经过异或就可以了
如果是4的倍数就有点麻烦了
4的倍数
要将w[i-1]经过字循环,字节代换和轮常量异或三次变换,得到的结果再和w[i-4]进行异或
字循环
字节替换
轮常量异或
1 |
|
注意这个轮常量的表是固定的,每一次循环就对应选择其中的第i列进行异或,这样就
最终得到结果如下
但貌似有更简单点的做法
列混合运算(补充)
此处符号为异或操作(原来矩阵相乘后应该是进行相加,而这里是异或)
举例(up主幸苦实操)
而最终轮就是将上面的9次循环过程中去掉列混合再执行一次
AES 加密算法(理解篇)
http://example.com/2024/04/13/AES加密算法/