参考:AES加密算法的详细介绍与实现_TimeShatter的博客-CSDN博客_aes加密
高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法。对称加密算法也就是加密和解密用相同的密钥。
AES的加密过程(AES处理单位:字节)
加密:明文P与密钥K分组后,对每组:明文组P与密钥组K处理->轮密钥加->10轮加密->密文组
解密:对每组:密文组->轮密钥加->10轮解密->明文组
以128位密钥分组为例:加密共10轮,第1轮到第9轮的轮函数一样,包括4个操作:字节代换、行位移、列混合和轮密钥加。第十轮迭代不执行列混合。解密同理。
明文组 明文组
密文组 密文组
一、加密
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用状态矩阵描述,在算法每一轮中,矩阵内容不断变化。矩阵字节排列顺序:从上到下,从左到右。
代入P=abcdefghijklmnop
上图中,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轮加密。
例:K = “abcdefghijklmnop”,则K0 = a, K15 = p, W[0] = K0 K1 K2 K3 = “abcd”
待补充
版权归原作者 菜鸟ql 所有, 如有侵权,请联系我们删除。