aes加密算法方式有哪些:AES加密算法流程介绍
aes加密算法方式有哪些:AES加密算法流程介绍密钥长度(32位比特字)AES02AES的基本结构AES为分组密码,把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:
01
AES算法简介
美国政府在1997年公开征集高级加密标准(Advanced Encryption Standard: AES)替代DES加密算法。AES得到了全世界很多密码工作者的响应,先后有很多人提交了自己设计的算法。最终有5个候选算法进入最后一轮:Rijndael,Serpent,Twofish,RC6和MARS。最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael算法获胜。
点击添加图片描述(最多60个字)
02
AES的基本结构
AES为分组密码,把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同,如下表所示:
AES
密钥长度(32位比特字)
分组长度(32位比特字)
加密轮数
AES-128
4
4
10
AES-192
6
4
12
AES-256
8
4
14
接下来,我们以AES-128为例,介绍AES算法的流程。
03
AES算法流程
AES加密算法涉及4种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。
下图给出了AES加解密的流程,从图中可以看出:
1)解密算法的每一步分别对应加密算法的逆操作
2)加解密所有操作的顺序正好是相反,保证了算法的正确性。
另外,加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到。算法中16字节的明文、密文和轮子密钥都以一个4x4的矩阵表示。
点击添加图片描述(最多60个字)
3.1 字节替代
字节代替的主要功能是通过S盒完成一个字节到另外一个字节的映射。AES定义了一个S盒和一个逆S盒,用于提供密码算法的混淆性。
S盒:
点击添加图片描述(最多60个字)
逆S盒:
点击添加图片描述(最多60个字)
S和S-1分别为16x16的矩阵,完成一个8比特输入到8比特输出的映射,输入的高4-bit对应的值作为行标,低4-bit对应的值作为列标。假设输入字节的值为a=a7a6a5a4a3a2a1a0,则输出值为S[a7a6a5a4][a3a2a1a0],S-1的变换也同理。
例如:字节00000000B替换后的值为(S[0][0]=)63H,再通过S-1即可得到替换前的值,(S-1 [6][3]=)00H。
3.2 行移位
行移位是一个4x4的矩阵内部字节之间的置换,用于提供算法的扩散性。
1) 正向行移位
正向行移位用于加密,其原理图如下。其中:第一行保持不变,第二行循环左移8比特,第三行循环左移16比特,第四行循环左移24比特。
假设矩阵的名字为state,用公式表示如下:state’[i][j] = state[i][(j i)%4];其中i、j属于[0 3]。