🧀分组加密(一)AES
2023-7-8
| 2023-8-31
0  |  0 分钟
type
status
date
summary
password
category
slug
icon

👐AES

📑基本概念

AES的明文分组长度为128位(16字节),密钥长度可以为128位(16字节)、192位(24字节)、256位(32字节),根据密钥长度的不同,AES分为AES-128、AES-192、AES-256三种。
AES的整体结构:
AES加密体制也是由多轮加密构成,除了结尾的一轮,其他轮都是由四个步骤组成——字节代替、行移位、列混淆、轮密钥加。而最后一轮仅包括字节代替、行移位、轮密钥加这三步。AES迭代的轮数与密钥的长度相关,16字节的密钥对应着迭代10轮,24字节的密钥对应着迭代12轮,32字节的密钥对应着迭代14轮。在开始所有轮迭代之前,需要进行一次初始变换——一次轮密钥加,这一步往往被称为第0轮

🪄加密步骤

🔑子密钥的生成(密钥扩展)

notion image
轮常量表
notion image

加密过程

字节代替

一个查表的过程,在加密时将状态矩阵中的一个输出字节的高四位作为行号,低四位作为列号
这张表就是S盒 , 解密的时候是逆S盒。
S盒
notion image
eg.替换
notion image
逆S盒(解密)
notion image

行移位

行移位就是将状态矩阵的第i行循环左移i位,如图3.4所示就是将经字节替换后的状态矩阵进行行移位之后的结果,第0行左移0位,第一行左移1位,第二行左移2位,第三行左移3位
notion image
行移位的逆变换
行移位的逆操作,是右移。规则同上

列混淆

列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵
notion image
逆运算
notion image

轮密钥加

轮密钥加是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作。
notion image

简要流程

加解密

notion image
第十轮没有列混合,第一轮解密没有逆列混合

解密

notion image

🐾脚本

逆sub_bytes
逆shift_rows
列混合
逆列混合

📎 参考文章

日常学习
分组密码(二)DESnssctf 2nd
目录