AES加密算法

概念

AES(Advanced Encryption Standard)
DES(Data Encryption Standard)

AES 是迭代型算法,它是输入和输出反复迭代多轮计算

分组长度128bit 16Byte 密钥长度 128/192/256 轮数 10/12/14

常用填充算法:PKCS7
常用分组工作模式:GCM

AES的三种密钥长度:

AES密钥长度

AES的加密步骤:

把明文按照128bit(16字节)拆分成若干个明文块,每个明文块是4*4矩阵
按照选择的填充方式来填充最后一个明文块
每一个明文块利用AES加密器和密钥,加密成密文块
拼接所有的密文块,成为最终的密文结果

AES加密流程

AES加密流程

1)AddRoundKey步骤

这里的密钥并不是原始的密钥,是做过密钥扩展算法的

image.png

密钥扩展是把每一轮使用的密钥生成下一轮使用的不同的新密钥

每一轮密钥是一个4*4 16字节的矩阵,先把每四个字节构成一个字,每个字4字节,把矩阵变成了4个元素的数组,基于g函数和异或生成下一轮的密钥

2)SubBytes步骤

3)ShiftRows步骤

image.png

4)MixColumns步骤

字节代换

AES的S盒

上述S-盒对状态的所有字节所做的变换记为ByteSub (State)

逆字节代换与逆S盒

逆字节替代变换是字节替代变换的逆变换,记为InvSubBytes(),在状态的每个字节上应用逆S盒。这是通过应用字节替代变换中的仿射变换的逆变换,再对所得结果应用 有限域的乘法逆运算得到的,即

AES的逆S盒:

行移位

将状态阵列的各行进行循环移位,不同行的移位量不同,记为 ShiftRow(State)

第0行:保持不变
第1行:循环左移C1个字节
第2行:循环左移C2个字节
第3行:循环左移C3个字节

逆行移位

逆行移位变换是行移位变换的逆变换,记为InvShiftRows(),它对状态的每一行进行循环右移

第0行:保持不变
第1行:循环右移C1个字节
第2行:循环右移C2个字节
第3行:循环右移C3个字节

列混淆

image.png

image.png

逆列混淆

image.png

轮密钥加

轮密钥与状态进行逐比特异或,表示为AddRoundKey(State,RoundKey)。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度与分组长度相同。

数学基础

image.png

乘法操作

参考:
https://blog.csdn.net/qq_40378034/article/details/114222341
《Web协议详解与抓包实战》:https://time.geekbang.org/course/intro/100026801

《HTTPS协议:点外卖的过程原来这么复杂》:https://time.geekbang.org/column/article/9492

现代密码学0x10|AES的轮函数
https://zhuanlan.zhihu.com/p/535728030

AES加密算法原理
https://blog.csdn.net/qq_43065505/article/details/104140158

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值