当前位置: 首页> 安全资讯 >

AES算法步骤


AES算法主要包括:字节替换、行移位、列混合和轮密钥加四个步骤。

 

1)字节替换 (SubstituteByte)。使用一个表 (被称为 S一盒)对分组进行逐一字节替换。S一盒是 AES定义的矩阵,把State中每个字节的高4位作为行值,低4位作为列值,然后取出S一盒中对应行列的元素作为输出。这个步骤提供了AES加密的非线性变换能力。S一盒与有限域乘法逆元有关,具有良好的非线性特性。为了避免简单代数攻击,S一盒结合了乘法逆元及可逆的仿射变换矩阵建构而成。


2)行移位(ShiftRow)。每一行都向左循环位移某个偏移量。在AES中(区块大小 128位),State的行维持不变,State的第二行循环左移 1个字节。同理,State的第三行及第四行分别循环左移2个字节和3个字节。经过 ShiftRow之后,矩阵中每一列,都是由输入矩阵中的每个不同列中的元素组成。行移位就是将某个字节从一列移到另一列中,它的线性距离是4字节的倍数。


3)列混合 (MixColumno每列的四个字节通过线性变换互相结合,对每列独立进行操作。每列的四个元素分别当作系数,合并后即为有限域中的一个多项式,接着将此多项式和一个固定的多项式相乘。此步骤亦可视为有限域之下的矩阵加法和乘法。矩阵的系数是基于在码字间有大距离的线性编码,也是基于算法执行效率的考虑。MixColumn函数接受4个字节的输入,输出4个字节,每一个输入的字节都会对输出的四个字节造成影响。因此,ShiftRow和MixColumn两步骤为这个密码系统提供了扩散性。经过几轮列混和变换和行移位变换后,所有的输出位均与所有的输入位相关。


4)轮密钥加 (AddRoundKey)。在每次的加密循环中,都会由主密钥扩展产生一组轮密钥 (通过 Rijndael密钥生成方案产生),这个轮密钥大小会跟原矩阵一样,该步骤就是轮密钥与原矩阵中每个对应的字节做异或运算。轮密钥加变换非常简单,却能影响State中的每一位。密钥扩展的复杂性和AES的其他阶段的复杂性,确保了该算法的安全性。


恒波软件致力于加密软件行业已经8年,自主研发的文件夹加密软件视频加密软件等均采用高强度的256位AES加密算法,并且久经市场检验,安全性和稳定性非常高,走在业内前列!