由于DES密钥长度太短,容易被暴力破解,所以诞生了AES算法,他们都是采用对称加密,最大的优点是加密速度快。AES同样采用分组加密的方法,下面看具体操作(以128位密钥,10轮循环为例)
目录
一.概述
1 将明文将输入的明文按字节分组为一个4 x 4的矩阵。同时,初始化密钥扩展,根据输入的密钥生成一系列轮密钥,用于后续的轮函数。
2 轮函数:对每一轮进行处理,包括字节替代、行移位、列混淆和轮密钥加。
3 最后一轮:去除列混淆操作,只进行字节替代、行移位和轮密钥加。
4 输出密文:将最后一轮处理的矩阵按列输出为密文。

二.初始变换
AES将明文按16字节一组分组,最后不足16字节按规定方式进行补位(在解密时需要将其去掉)将分好组的明文构造为一个4*4的矩阵,与同样为4*4的密钥矩阵进行异或操作,完成初始变化,得到一个状态矩阵S0。

三.轮函数(字节代换,行移位,列混合,轮密钥加)
3.1 字节代换 SubBytes
将经过初始变换的状态矩阵S0按给定的S-BOX替代。
S盒:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00 63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76
10 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0
20 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15
30 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75
40 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84
50 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF
60 D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8
70 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2
80 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73
90 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB
A0 E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79
B0 E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08
C0 BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A
D0 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E
E0 E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF
F0 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16
状态矩阵中,十六进制数第一位表行,第二位表列。如:2f (第二行第f列,查表知为89)
3.2 行移位 ShiftRows
移位规则:第一行左移0位;第二行左移1位;第三行左移2位;第四行左移3位。得到状态矩阵S1。

3.3 列混合 MixColumns
首先将S1要左乘一个固定矩阵,但是并不按照矩阵乘法规则进行。该乘法与矩阵乘法的区别是,将矩阵乘法的“+”变为异或运算;乘法则根据以下规则进行

乘完后得到4*4的状态矩阵S2。
3.4 轮密钥加 AddRoundKey
将S2与每轮对应的子密钥进行异或运算。(子密钥的生成稍后讲解)
4.1由于密钥要参与10轮循环,每轮都用的不同的密钥,所有要将原始的128位,四组密钥进行扩展。

轮常量表:
Round 1: 01 00 00 00
Round 2: 02 00 00 00
Round 3: 04 00 00 00
Round 3: 08 00 00 00
Round 5: 10 00 00 00
Round 6: 20 00 00 00
Round 7: 40 00 00 00
Round 8: 80 00 00 00
Round 9: 1B 00 00 00
Round 10: 36 00 00 00
四.补充:
AES属于spn结构的分组加密与DES的feistel结构相比
1密钥长度更长,不易受穷举法攻击
2在软件和硬件上都有更高的效率
4889

被折叠的 条评论
为什么被折叠?



