AES加密

参考:AES加密算法的详细介绍与实现_TimeShatter的博客-CSDN博客_aes加密

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法。对称加密算法也就是加密和解密用相同的密钥。

AES的加密过程(AES处理单位:字节)

加密:明文P与密钥K分组后,对每组:明文组P与密钥组K处理->轮密钥加->10轮加密->密文组

解密:对每组:密文组->轮密钥加->10轮解密->明文组

以128位密钥分组为例:加密共10轮,第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。第十轮迭代不执行列混合。解密同理。

                                明文组                                                               明文组

AES加密_第1张图片

                               密文组                                                                密文组

一、加密

1.明文P与密钥K分组

明文分组:每组长度相等,都是128位(16字节),获得明文分组P=P0P1P2...P15

密钥分组:有128位,192位,256位,推荐加密轮数分别为10,12,14

2.分完组后的明文组P与密钥组K处理

(1)明文组P处理

例:P=abcdefghijklmnop,则n对应P0,p对应P15(ASCII码与UTF-8编码中一个英文字母占一个字节的空间)。

P用状态矩阵描述,在算法每一轮中,矩阵内容不断变化。矩阵字节排列顺序:从上到下,从左到右。

AES加密_第2张图片

代入P=abcdefghijklmnop

AES加密_第3张图片

 上图中,0x61为字符a的十六进制表示

(2)密钥组K处理

以密钥分组每组128位为例(则推荐加密轮数为10,前9次执行操作一样,第十次有所不同)

类似地,128位密钥也是用字节为单位的矩阵表示,通过密钥编排函数,形成具有44个元素的序列W[0],W[1], … ,W[43](每个元素4个字节);其中,W[0],W[1],W[2],W[3]为原始密钥,其余40个元素分为10组,每组4个元素(4*4=16字节),分别用于10轮加密。

AES加密_第4张图片

 例:K = “abcdefghijklmnop”,则K0 = a, K15 = p, W[0] = K0 K1 K2 K3 = “abcd”

待补充

你可能感兴趣的:(密码,安全)