基于AES加解密系统的设计与实现

时间:2022-10-04 02:18:35

基于AES加解密系统的设计与实现

作者简介作者简介:曾炜(1987-),男,中国人民国防信息学院助教,研究方向为网络安全;王科怀(1987-),男,硕士,中国人民国防信息学院助教,研究方向为软件可靠性、容错计算、移动计算、服务可用性评测。0引言

在信息时代,数据有着异常重要的地位。因此,数据在存储、传送中必须保证安全,研究和设计相关的数据加密解密系统因而显得十分必要。本文利用aes(advanced encryption standard)对称加密标准,设计和实现了一套数据加密解密系统,为数据安全提供保障。

1高级加密标准aes

1.1rijndael算法简介

nist将rijndael算法作为高级加密标准[1]。rijndael的运算易于抵抗强力和时间选择攻击[2],此外,无需显著降低rijndael的性能就可提供对抗这些攻击的防护。

rijndael算法是一个可变数据块长和可变密钥长的分组迭代加密算法,数据块长和密钥长可分别为128、192或256比特,但为了满足aes的要求,分组长度为128比特,密钥长度为128、192或256比特[3]。数据块要经过多次数据转换操作,每一次转换操作产生一个中间结果,这个中间结果被称为状态[1]。状态可表示为二维字节数组即状态矩阵,它有4行、nb列,且nb等于数据块长除以32,在标准aes里nb=4。密钥也可类似地表示为二维字节数组,它有4行、nk列,且nk等于密钥块长除以32。算法转换的轮数nr由nb和nk共同决定[1],具体数值如表1所示。

表1在不同nb和nk下轮的数值nr

nrnb=4nb=6nb=8nk=4101214nk=6121214nk=8141414rijndael算法采用替代/置换(sp)网络结构[4],每一轮由3层组成:①非线性层:进行subbyte变换(即s盒替换),起混淆作用;②线性混合层:进行shiftrow行变换运算和mixcolumn列变换运算,以确保多轮之上的高度扩散;③密钥加层:子密钥简单的异或到中间状态上。

1.2rijndael算法加密解密流程

rijndael算法加密和解密基本流程[4]如图1所示(以128位为例)。

图1aes算法加解密基本流程

2aes加解密系统设计与实现

2.1系统设计

aes算法要实现的功能是将数据信息按128比特分组进行加密或解密,而且要支持3种密钥长度(128、192和256比特)的输入[5]。本设计通过用vc++编程语言实现aes加解密算法,使它能够对输入数据(字符串或文件)按用户设置的密钥进行加密或解密。系统模块如图2所示。

图2系统模块

本系统有用户控制、密钥扩展、字符串加密、字符串解密、文件加密、文件解密等模块。各个模块功能如下:①用户控制模块:此模块用于设置密钥位数以及输入初始密钥,密钥是数字字母组合的字符串,通过此模块,用户可以设置密码位数为128、192、256位;②密钥扩展模块:此模块用于对初始密钥进行扩展,根据算法实现对输入密钥的编排;③字符串加密模块:此模块根据rijndael算法用于对所输入的字符串进行加密;④字符串解密模块:此模块用于对根据rijndael算法加密形成的密文进行解密;⑤文件加密模块:此模块用于对文件进行加密;⑥文件解密模块:此模块用于对文件进行解密。

系统工作流程图如图3所示。

2.2系统实现

该系统在windows xp系统环境下运行,用vc6.0编译运行后会出现系统界面。密钥位数初始值设置为128bits,密钥初始值设置为空,字符串预设值是0123456789abcdef。用户界面如图4所示。

如图4所示,字母标记处为各个控件位置。

图中标记的a、b、c三个按钮是用来选择密钥位数的,默认值是128bits。点击任意一个按钮后,然后点击d处的“设置密钥位数”按钮可将密钥位数设置成相应的值。

图中标记的d处按钮可用来设置密钥位数。

图中标记的e处是数据加解密密钥的edit box控件,此处设置的初始值为空,我们也可以从这里输入任何想设置的密钥,然后点击f处的“设置密钥”按钮,密钥即设置成功。每次加解密时,程序都会调用此密钥进行aes加解密。

图中标记的f处是设置密钥按钮,点击它可以手动设置密钥。

图中标记的g处是进行字符串加密时字符串的edit box控件,此处设置的初始值是0123456789abc def,也可以任意输入字节,然后点击h处的“字符串加密”按钮,程序就会调用密钥对该字符串进行aes加密。

图3系统工作流程

图4用户界面

图中标记的h处是

字符串加密按钮,当设置好密钥位数及密钥后,点击它就会对字符串进行加密。

图中标记的i处显示的是明文字符串经aes加密后输出的密文字符串。

图中标记的j处按钮在字符串加密后要想解密该字符串则点击它。

图中标记的k处显示的是要选择加密文件的存储路径。

图中标记的l处是文件读取按钮,点击它就会出现文件选择框,然后则可选择需要加密的文件。

图中标记的m处是文件加密按钮,当浏览需要加密的文件后点击它就会对该文件进行aes加密。

图中标记的n处是文件解密按钮。对文件加密后,点击它就会对相应的密文文件进行解密。

图中标记的o处显示的是一个文件加解密的进度条,文件加解密时会显示出其进度。

图中标记的p处是关闭程序按钮。

下面举例对文件进行加密解密试验。点击想要设置的密钥位数,如256bits,并设置密钥为000,浏览一个本地文件,然后打开一个rmvb文件进行加密。加密成功后如图5所示。

图5文件加密

文件解密与文件加密相同,先浏览要解密的文件,但该文件必须是经过aes加密后的密文文件,否则会出现对话框“文件可能已损坏或非经aes加密过”。在设置好正确的密钥位数和密钥后,才能解密成原始的明文文件,否则会出现乱码文件。

浏览密文文件后解密如图6所示,其中.en文件是加密后系统自动生成的密文文件。

3结语

本文提出的aes加解密系统是严格按照rijndael算法设计和实现的,可以手动设置密钥及其位数,并对字符串和文件进行加密解密。而当加密和解密密钥不同时,解密后不会得到正确的明文。系统采用vc++6.0运行平台、windows xp操作系统,在编写程序过程中,要求稳定、简洁明了,尽量减少由于程序跳转等问题造成的程序运行错误或漏洞。经过测试,本文所设计和实现的aes加解密系统运行稳定,具有很好的实用性。

图6文件解密

参考文献参考文献:

\[1\]nist. advanced encryption standard (aes) [m].federal information processing standards publication,2001.

[2]murphy s,robshaw m j b.essential algebraic structure within the aes[r].in:proceedings of crypto'02, santa barbara, california,usa,2002.

[3]张超,陆浪如,楚泽甫,等.aes 算法及其实现技术[j].交通与计算机,2001,19(3).

[4]陈鲁生,沈世镒.现代密码学[m].第1版. 北京:科学出版社,2002.

[5]张清华,马传龙,赵继德,等.rijndael 算法及其性能分析[j].

上一篇:基于频段局部能量特征方法的接地网故障诊断 下一篇:精品论文:毕业论文提纲范例样本