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轮
🪄加密步骤
🔑子密钥的生成(密钥扩展)
轮常量表
加密过程
字节代替
一个查表的过程,在加密时将状态矩阵中的一个输出字节的高四位作为行号,低四位作为列号
这张表就是S盒 , 解密的时候是逆S盒。
✨S盒
eg.替换
✨逆S盒(解密)
行移位
行移位就是将状态矩阵的第i行循环左移i位,如图3.4所示就是将经字节替换后的状态矩阵进行行移位之后的结果,第0行左移0位,第一行左移1位,第二行左移2位,第三行左移3位
行移位的逆变换
行移位的逆操作,是右移。规则同上
列混淆
列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵
逆运算
轮密钥加
轮密钥加是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作。
简要流程
加解密
第十轮没有列混合,第一轮解密没有逆列混合
解密
🐾脚本
逆sub_bytes
逆shift_rows
列混合
逆列混合