AES加密算法的实现及应用
摘要:AES加密算法具有安全性高,运行速度快,对硬件配置要求低,算法属于对称算法等优点,非常适合硬件的实现。
课题对于AES加密算法进行改进,提高程序运行效率进行了研究。
研究主要包括AES加密算法的改进,C语言实现,以及完成对数据流的加密和解密过程,同时对AES加密算法的应用进行了简单介绍。
关键词:AESC语言加密
前言: AES加密算法作为DES加密算法的替代品,具有安全、高效以及在不同硬件和软件[6]运行环境下表现出的始终如一的良好性能,因此该算法具有较高的开发潜力和良好的实用价值。
本研究主要包括AES加密算法的改进,C语言实现,以及完成对数据流的加密和解密过程,同时对AES加密算法的应用进行了简单介绍。
一、AES加密算法的改进及实现
(1)AES加密算法的流程图
在图1.1中,Round代表加密的轮数,即程序循环次数。
State代表状态矩阵,一个存储原始数据的数组。
RoundKey代
表经过扩展运算后的密钥数组。
ByteSub()代表置换函数,对状态矩阵State中的数据进行置换。
ShiftRow()代表移位函数,对状态矩阵State中的数据进行移位运算。
MixColumn()代表列混合运算函数,对状态矩阵State中的数据进行列混合运算。
AddRoundKey()代表异或运送函数,对数组State和数组RoundKey进行异或运算。
由上图可以看出,最后一次轮变换比前几次轮变换少执行一次MixColumn()函数。
(2)AES解密算法的流程图
在图1.2中,Round代表加密的轮数,即程序循环次数。
State代表状态矩阵,一个存储原始数据的数组。
RoundKey代表经过扩展运算后的密钥数组。
InvByteSub()代表置换函数,对状态矩阵State中的数据进行置换。
InvShiftRow()代表移位函数,对状态矩阵State中的数据进行移位运算。
InvMixColumn()代表列混合运算函数,对状态矩阵State中的数据进行列混合运算。
由上图可以看出,最后一次轮变换比前几次轮变换少执行一次MixColumn()函数。
二、AES加密算法复杂度分析
下面对改进前的算法和改进后的算法进行复杂度分析[8]以及程序执行效率的分析。
设b为0x00―0xff中的任意常数,以0x09*b为例进行讨
论。
该算式分解如下:。