当前位置:文档之家› AES加密算法的实现及应用

AES加密算法的实现及应用

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为例进行讨
论。

该算式分解如下:。

相关主题