文件加密与解密算法分析与应用.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件加密与解密算法分析与应用

文件加密与解密算法分析与应用   摘 要:随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。解决信息安全的方法是加密,所以加密解密就显得日益重要。本课题重点研究常用文件加密解密算法的基本思想及实现过程中所用到的方法、技术。同时对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表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]便

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档