当前位置:文档之家› 文件加密与解密算法

文件加密与解密算法

文件加密与解密算法的分析与应用
摘要:随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。

信息安全已经成为世界性的现实问题,已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。

信息安全是社会稳定安全的必要前提条件。

解决信息安全的方法是加密,所以加密解密就显得日益重要。

本课题重点研究常用文件加密解密算法的基本思想及实现过程中所用到的方法、技术。

同时对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表aes算法和des算法进行了研究和比较,最后结合常用算法设计实现了简易加密解密应用软件。

关键词:解密文件加密密码体制 des aes
中图分类号:tp314 文献标识码:a 文章编
号:1672-3791(2012)06(b)-0019-01
1 引言
1.1 文件加密与解密算法应用的意义
随着因特网、全球贸易和其它活动的增长,密码技术越来越多地用于个人的标识和认证等,它是取得信息安全性最有效的一种方法,是信息安全的核心技术。

通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。

对称密码算法主要用于保证数据的机密性,通信双方在加密解密过程中使用它们共享的单一密钥。

最常用的是数据加密标准(des)算法,但由于des的密钥长度较短,不适合于数据加密安全性的要求。

通过分组密码返回的加密数据的位数与输入数据相同。

迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。

本文在研究分析了aes加密原理的基础上着重说明了aes算法实现的具体步骤:扩展密钥的异或运算、列变换、行变换、s盒变换等,以及各步骤的轮换顺序、密钥扩展程序keyexpansion、优化等。

2 加密/解密算法的原理分析[1]
2.1 原理
对于aes算法,输入分组、输出分组、状态长度均为128比特。

nb=4,该值反应了状态中32位字的列数。

对于aes算法,密钥k的长度是128、192或256 bits。

密钥长度表示为nk=4、6或8,反应了密钥中32位字的个数。

对于aes算法,算法的轮数依赖于密钥长度。

将轮数表示为nr,当nk=4时nr=10;当nk=6时nr=12;当nk=8时nr =14。

对于加密和解密变换,aes算法使用的轮函数由4个不同的以字节为基本单位的变换复合而成。

(1)字节替代,利用一个替代表。

(2)将状态矩阵的每一行循环移位不同的位移量。

(3)将状态矩阵中每一列的数据进行混合。

(4)将轮密钥加到状态上。

2.1.1 s盒变换:对输入矩阵的任一个元素a做如下变换s[a]
(1)一个元素a从存储角度看都是一个8位的二进制数。

算出前4位所代表的十六进制数x和后4位所代表的十六进制数y。

(2)从aes算法给定的s-box中找出s[a]=s[x,y]的值。

2.1.2 行变换:shiftrows()是一个置换操作,它将state矩阵中的字节向左旋转
2.1.3 列变换:列变换是对中间状态矩阵state逐列进行变换
3 算法的具体应用与实现
3.1 加密算法
加密算法是一个循环的过程,过程如下:128位数据分组→与扩展
密钥的异或运算→s盒变换→行变换→列变换→与扩展密钥的异或→s盒变换→行变换→与扩展密钥的异或→输出128位数据。

(1)使用subbyte()函数依据s置换表对状态矩阵state[4][4]中的数字进行置换。

(2)使用shiftrow()数对状态矩阵state[4][4]中的各行数据进行循环移位运算。

加密时,要结合密钥扩展所得的数据对文件进行加密。

加密过程简要如以下几点。

①第0轮加密。

本轮加密是将状态矩阵state[4][4]中的16字节数字与密钥扩展数组中的w[o]~w[3]这16字节数字进行异或运算。

得到16字节新的数字,这些数字存放于状态矩阵state[4][4]中取代原来的数据。

②第l~9轮加密。

设轮数为k。

程序执行当中首先对状态矩阵state[4][4]使用subbyte()函数将矩阵中的数字进行置换。

再次对置换后的状态矩阵使用shiftrow()函数将矩阵中相应
行中的数字进行移位。

再次对移位后的状态矩阵使用mixcolunms()函数,利用上述的列混合运算公式对状态矩阵中的数字进行运算,得到一个新的状态矩阵。

最后将经过列混合运算之后的状态矩阵与密钥扩展数组中w[4k]~w[4k+4]的数字进行异或运算,将所得结果存入状态矩阵中,至此一轮加密完成。

③第10轮加密。

第10轮加密不进行列混合运算,其他部分与第l~9轮加密相同。

经过第0~10轮加密后所得到的状态矩阵state[4][4]便是实验所需要的密文。

3.2 解密算法
解密算法是加密算法的逆过程,具体解密过程如下:128位数据分组→与扩展密钥的异或运算→反行变换→反s盒变换→与扩展密钥的异或→反列变换→反行变换→反列变换→与扩展密钥的异或→输出128位数据。

得到的解密算法中,各个变换的操作顺序与加密算法不同,但密钥编排形式相同。

3.5 实现方面的问题
(1)密钥长度要求。

aes算法的实现至少需要支持第3节中描述的3种密钥长度:128,192或256 bits。

实现可以选择支持两种或三种密钥长度,这将促进算法执行的互用性。

(2)密钥限制。

对于aes算法没有发现弱密钥或半弱密钥,所以对密钥选取没有限制。

(3)密钥长度,分组大小和轮数的参数化。

该标准明确地定义了密钥长度(nk),分组大小(nb)和轮数(nr)允许的取值。

然而,该标准的未来版
本可能包括对这些参数允许取值的改变或增加。

因此,当实现者设计aes的实现时可以选择将未来的变化考虑在内。

(4)针对不同平台的实现建议。

很多情况下,实现的可变性可能会提供更好的性能或其它优势。

当给定相同的输入密钥和数据时,任意与该标准说明的算法得到相同输出的实现都是可以接受的aes实现。

4 结语
新的aes将无疑成为加密所有形式电子信息的事实上的标准,其在某种意义上是牢不可破的,因为没有已知的密码分析攻击可以解密aes密文,除非强行遍历搜索所有可能的256位密钥。

随着科学技术的高速发展,文件加密与解密技术的重要性日益突出,本文中主要将aes加密算法进行了研究和应用。

rijndael作为新一代的数据加密标准汇聚了强安全性、高性能、等优点。

aes将会更加广泛地应用于其它行业,不久的将来它也会被新的加密算法代替。

参考文献
[1] 陈运.信息加密原理[m].成都:电子科技大学出版社,1990.
[2] 加密解密技能百练丛书[m].中国铁道出版社,书号(71130585).
[3] 张龙祥,等.向对象程序设计[m].北京:人民邮电出版
社,2001.。

相关主题