1.AES256算法介绍
AES256算法为最常见的对称加密算法,对称加密算法也就是加密和解密用相同的密钥,具体的加解密流程如下图。
其中,明文P是指没有经过加密的数据,数据长度128bit;密钥K是用来加密明文或解密密文的密码,在对称加密算法中,加密与解密的密钥是相同的,长度为256bit;密文C为经加密函数处理后的数据,数据长度128bit;AES256加解密函数为明文与密文之间换算的算法。
2.AES256算法流程
AES256算法并不是一次性将明文转变为密文的算法,而是经过许多轮的计算得到的,共需要14轮计算,除去初始轮和最终轮其余普通轮计算加密过程均要涉及到4种操作,分别是字节替代、行移位、列混淆和轮密钥加。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16个字节的明文、密文和轮密钥都以一个4x4的矩阵表示。
由于AES256算法加密解密均需要进行14轮的计算,因此在开始执行算法前需要将初始密钥K进行密钥扩展生成14轮计算所需的子密钥。
2.1密钥扩展
子密钥的生成是以列为单位进行的,一列是32Bit,四列组成子密钥共128Bit。生成子密钥的数量比AES算法的轮数多一个,因此AES256算法共计14轮,子密钥为W[0,3]、W[4,7]…W[52,55]、W[56,59]。
2.2字节替代
字节替代的主要功能就是让输入的数据通过S盒表完成从一个字节到另一个字节的映射。加密时字节替换用S盒,逆S盒与S盒对应,用于解密时对数据处理,解密时的程序处理称作逆字节代换。
S盒表:
逆S盒表: