AES算法

时间:2024-03-14 15:02:09
简介
AESAdvanced Encryption Standard的简称,其分组长度为128比特,**长度有128192256。不同长度的**在加解密是循环次数不相同,分别为10,12,14次。
AES算法
整体加解密流程
Nr101214Plaintext为明文,ciphertext为加密后的密文。除了最后一个round,前面的round都是分为四个步骤subBytesshiftRowsMixColumnsAddRoundKey,而最后一个round省略掉MixColumns
AES算法
AES-128情况下的编解码流程
AES算法
AES算法中的数据结构
数据结构指的是数据流在处理中的排列顺序,及处理生成序列的流程。

AES算法

SubBytes (Substitute Bytes)
SubBytes的处理是将输入数据进行映射转换,转换表生成按照一定方式,方法是公开的。SubBytesInvSubBytes(Inverse Substitute Bytes)是一对逆过程,采用两张不同的表格。映射方式是将原始字节为0xXY的信息转换为表格中XY列中指示的数据。
AES算法
ShiftRows(Shift Row Transformation)
ShiftRows是将数据进行循环移位,第一行不做移位,第二行左移1个字节,第三行左移两个字节,第四行左移3个字节(都是需要循环左移)InvShiftRows过程是向相反的方向去进行移位。
AES算法
MixColumns (Mix Column Transformation)
MixColumn是通过有限域GF(2^8)算法现实的,现在结果不能超过2^8,采用的多项式为x8 + x4 + x3 + x + 1MixColumn矩阵运算方式如下
AES算法
公式为
AES算法
展开式,其中点号为多项式乘运算,加号为异或运算,结果需要使用多项式进行二进制取模运算
AES算法
InvMixColumnsMixColumns的逆运算,其公式如下,亦即系数为MixColumns矩阵的逆矩阵
AES算法
AddRoundKey ( Add Round Key Transformation )
简单的异或运算,通过输入数据和key进行按位进行异或运算得到输出结果,按列进行Add Round Key运算。
Round key的生成
下图示例为AES-128的情形,而对于AES-192AES-256,算法类似,不同在于初始N个不需要生成的word,对于128192156N分别为4,6,8
AES算法
W8-W43的生成方式类似方式推到下去,伪代码实现,RotWord为一个字节的循环左移运算,亦即b0b1b2b3转换为b1b2b3b0;SubWordSubBytes转换字节数据的功能一致。
AES算法
算法伪代码
AES算法