APP下载

浅析AES加密算法

2009-07-16

新媒体研究 2009年8期
关键词:加密算法软件设计背景

甘 佺

[摘要]当代主流加密算法AES的研究背景,算法简介和具体实现方法,包括对AES标准中运行时间过长的函数进行优化,和WINDOWS下AES软件开发的简介。

[关键词]AES 加密算法 背景 算法实现 程序优化 软件设计

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0420066-01

一、当代加密算法AES

(一)AES算法简介

AES的全称是Advanced Encryption Standard,即高级加密标准。2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种候选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。Rijnda

-el是在1999年下半年,由研究员Joan Daemen和Vincent Rijmen创建的。AES正日益成为加密各种形式的电子数据的实际标准。

高级加密标准(AES)是美国标准与技术研究院针对电子数据的加密所制定的规范,它将要成为公认的数字信息(包括财务数据、电信数据和政府数据)加密方法。AES是一种可用来保护电子数据的新型加密算法。可以使用128、192和256位密钥的迭代式对称密钥块密码,并且可以对128位(16个字节)的数据块进行加密和解密。

(二)AES在现实中的应用

AES算法标准给出了数学说明以及部分程序伪码,但是程序运行效率较低,无法达到实际应用要求。同时改进后的程序普遍涉及到版权问题,无法在实际开发中直接使用。尽管如此在程序人员对AES程序进行自主改进后,AES作为新一代的数据加密标准的优点,强安全性、高性能、高效率、易用和灵活等优点就完全体现出来,因此AES加密算法成为美国乃至世界新的数据加密标准而被广泛应用在各个领域。

二、AES加密算法的实现

(一)系统结构

系统结构的文字描述:AES加密算法包括加密和解密2大部分,加密部分具体实现对数据的加密和参数文件的生成,解密部分具体实现对已加密文件的解密和参数文件的删除,具体实现过程较为复杂,在AES的标准式样书中可以查看具体实现文档,由于篇幅原因本文只详细介绍在实现中应用AES加密算法最重要的优化部分。

(二)AES加密算法的优化

优化原因:按照AES算法的理论设计的,在实际的应用中运行速度慢,加密10M的文件需要几十秒的时间,无法达到实际应用的要求。所以需要针对标准算法进行优化。

优化方法:1.将所有的乘除运算转换为位运算,例如,A*16可以转换为将A左移4位。这种方法根据客户的测试的结论,可以提高50%的运行速度。2.修改加密的算法的逻辑,将其中最耗时的MixColumns函数改进。具体的方法是简化MixColumns函数中进行的矩阵运算。把矩阵运算先计算出来,以数组方式直接在头文件中定义,在运算时直接使用这个数组。同时,为使用预先计算的数组,需要将四个函数的算法统一编写,形成新的程序结构。

MixColumns函数代码如下:

void MixColumns(word8 a[4][MAXBC])

/*Mix the four bytes of every column in a linear way*/

word8 b[4][MAXBC];

int i,j;

for(j=0;j

for(i=0;i<4;i++)

b[i][j] = mul(2,a[i][j])

^ mul(3,a[(i+1) % 4][j])

^ a[(i+2) % 4][j]

^ a[(i+3) % 4][j];

for(i=0;i<4;i++)

for(j=0;j

a[i][j] = b[i][j];

}

此代码运行时间过长,先将此矩阵结果算出后能大大缩短程序运行时间,改进后代码由于篇幅过长无法详细列举。

(三)基于WINDOWS操作系统的AES加密软件设计

1.开发环境。参数文件生成程序:运行环境为Windows XP操作系统。使用MSC开发,可以使用MFC,程序要求可以在未安装VC++的系统中运行。解密程序:运行环境为Cygwin。使用ANSI C开发,使用GCC编译。

2.参数文件的定义

AES加密算法中的参数文件使用文本形式,主要包含内容有:

(1)密钥长度:AES提供128、192和256三种密钥长度可任意选择。

(2)密钥生成方式:有DEFAULT、FILE或INPUT三种方式生成密钥,DEFAULT表示默认方法,FILE表示通过哈希算法生成密钥,INPUT表示通过用户自己输入密钥。

(3)保存密钥:密钥生成后保存在参数文件中。(如果是FILE方式生成密钥则保存密钥路径)。

(4)输入路径:待加密文件路径。

(5)输出路径:加密后文件输出路径。

3.详细式样设计

(1)加密部分:加密部分主要包含、密钥生成、密钥长度选择、参数文件生成路径、输出和输入路径等等。

①密钥长度指定,可以建立一个下拉菜单,设置128、192和256三种选项。②密钥生成:有三项选择具体为默认密钥生成;用哈希算法产生的密钥文件作为密钥;用户随机输入密钥。③输出输入路径设置:输入路径为待加密文件路径,输出路径为文件加密后生成的加密文件保存路径,可以设置默认项,也可以由用户自己设置。④参数文件指定:生成参数文件的保存路径。

(2)解密部分:解密部分包含密钥输入、参数文件调用、待解密文件输入、解密文件输出等。

①密钥输入可以选择默认密钥和用户自己输入加密时密钥,还可以放弃输入密钥直接调用参数文件。②参数文件调用:调用和待解密文件相匹配的参数文件,参数文件包含通过哈希算法计算出来的密钥,待解密文件路径等。③路径选择:包括待解密文件路径(如果不输入路径可以直接输入文件名);输出路径为文件解密完成后的输出

路径。④解密完成后参数文件会被删除。

三、结论

AES加密算法已经在现实中得到了广泛的应用,学习AES加密算法的编程能让你更加了解当代加密算法的具体形式与逻辑,正是因为AES加密算法这样的为保护信息安全软件的产生才能让IT技术更加健康的向前发展,在电子交易,宽带通信,信息传输等等方面都有AES加密算法的影子,本文已较小的篇幅从几个方面简单地分析了AES加密算法,介绍了AES在WINDOWS下的软件编写和详细的式样分析,从几个方面简单的分析了AES加密算法。

猜你喜欢

加密算法软件设计背景
等腰直角三角形背景下的旋转相似
比大小,想背景,悟本质
跟踪导练(一)5
教育云平台的敏感信息保护技术研究
基于STM8S903K3的序列打螺丝夹具的软件设计
一种VHDL语言代码重用的方法
一种改进的加密算法在空调群控系统中的研究与实现
基于Jave的AES加密算法的实现
基于Modelica的高炉顶压控制仿真
AES加密算法的实现及应用