信息安全4——AES加密算法

①算法简介

AES(Advanced Encryption Standard)算法即高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。在微信小程序的数据传输过程中用到的加密算法。AES算法是用来替代原先的DES,目前已经被全世界广泛使用,同时AES已经成为对称密钥加密中最流行的算法之一。AES支持三种长度的密钥:128位,192位,256位。根据密钥长度的不同,可以将AES分为AES128,AES192,AES256三种。这里我们主要对AES128进行具体讲解

②状态矩阵

在AES算法中,以字节为处理单位,128长度的分组可以分为16个字节(每个字节8位),将这16个字节从左到右从上到下依次排列构成一个4*4的矩阵,这个矩阵称为状态矩阵,如图2.1(a)是以明文abcdefghijklmnop为例构成的一个明文矩阵,(b)是与之对应的用十六进制数表示的状态矩阵。输入的明文分组可以构成一个明文初始状态矩阵。同样的密钥也构成一个状态矩阵,并通过密钥扩展函数将其扩展为44个字节组成的序列由W0-W44表示,其中W0-W3是初始密钥,后面的40个字节分为10组分别用于轮函数中的轮密钥加。

信息安全4——AES加密算法_第1张图片

(a) 

信息安全4——AES加密算法_第2张图片

 (b)

图 2.1

③算法流程

AES算法原理流程图如图3.1所示,明文首先和原始密钥进行依次异或运算,然后经过轮函数加密之后形成密文,其中前九次的轮函数所做的操作都是一样的(字节代换、行移位、列混合、轮密钥加),而第十次的轮函数和前九次不同(字节代换、行移位、轮密钥加)

信息安全4——AES加密算法_第3张图片图 3.1

③ 流程详解

(1)字节代换

简单的来说就是一个查表的过程,在加密时将状态矩阵中的一个输出字节的高四位作为行号,低四位作为列号,用S盒中对应行列位置的元素进行替换,如图3.2所示是一个S盒,图3.3所示是对上文中明文的状态矩阵进行字节代换之后得到的结果

信息安全4——AES加密算法_第4张图片

 图 3.2

信息安全4——AES加密算法_第5张图片

 图 3.3

(2)行移位

行移位就是将状态矩阵的第i行循环左移i位,如图3.4所示就是将经字节替换后的状态矩阵进行行移位之后的结果,第0行左移0位,第一行左移1位,第二行左移2位,第三行左移3位

信息安全4——AES加密算法_第6张图片

 图 3.4

(3)列混合

将状态矩阵进行左乘一个给定矩阵的操作,如图3.5所示,是将行移位之后的矩阵进行列混合运算之后的结果,在列混合中的乘法和普通的乘法不相同,其规则如图3.6所示

信息安全4——AES加密算法_第7张图片

 图 3.5

信息安全4——AES加密算法_第8张图片

 图 3.6

(4)轮密钥加

轮密钥加是将状态矩阵中的数据以列为单位与每一轮的密钥进行异或运算,例如在第一轮中的轮密钥加密钥为W4,W5,W6,W7,明文的状态矩阵的第一列与W4进行异或运算,如图3.7所示是以上文中的明文进行轮密钥加后的结果信息安全4——AES加密算法_第9张图片

 信息安全4——AES加密算法_第10张图片

 图 3.7

④密钥扩展函数

假设在算法开始时给定的密钥为abcdefghijklmnop,对其进行扩展就是进行如图4.1所示的步骤,最终会形成10组子密钥

信息安全4——AES加密算法_第11张图片

图 4.1

轮常量表如图4.2所示 

信息安全4——AES加密算法_第12张图片

 图 4.2

以上就是AES算法的加密过程

参考资料:

B站上AES算法的一个比较详细的讲解视频,大家可以参考

相关文章链接

你可能感兴趣的:(信息安全,网络,大数据,安全)