欢迎来到天天文库
浏览记录
ID:24577256
大小:50.50 KB
页数:4页
时间:2018-11-14
《基于aes的软件加密解密的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于AES的软件加密解密的设计与实现唐高阳1 孙世坤2(1.沈阳理工大学理学院,辽宁沈阳110168;2.朝阳县蒙古族中学,辽宁朝阳122000)【摘 要】随着计算机的普及以及重视知识产权保护,使得软件加密技术蓬勃兴起,AES算法正取代DES算法成为使用广泛的新标准。介绍了如何运用AES算法对文档进行加密和解密,并给出了一个基于VisualC++2010开发平台和AES算法的实例。.jyqken和Rijmen共同设计的。Rijndael算法是具有分组长度和密钥长度均可变的分组算法。密钥长度和分组
2、长度可以独立地指定为128位、192位或是256位。Feistel结构是数据分组中的一半被用来修改数据分组中另外一半,然后交换这两部分,AES算法不是Feistel结构的算法。AES定义了一个S盒,它是由16×16个字节组成的矩阵,包含了8位值所能表达的256种可能的变换。1.1 字节代换AES中输入分组是用以字节为单位的正方形矩阵来描述的,该分组被复制到State数组,这个数组在加密或解密的每个阶段都会被改变,运算完最后的轮密钥加变换后,State被复制到输出矩阵中。字节代换是一个简单的查表操
3、作,用State数组中的每个字节的高4位作为行值,低4位作为列值,然后取S盒中对应行列的元素作为输出,最后把State数组的该字节用输出的这个元素替换。例如,十六进制值19,所对应的S盒的行值是1,列值是9,S盒中在此位置的值是D4,然后用D4替换19。1.2 行位移行位移是这样来实现的,State的第一行保持不变,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。1.3 列混淆列混淆是对每列独立地进行操作。列混淆变换是这样进行的,把经行位移变换操作后的State数组的一列
4、取出来,然后与一个4×4的矩阵进行与操作,把得到的结果覆盖取出来的那一列,依次类推,处理完4列以后就完成了列混淆变换。1.4 轮密钥加轮密钥加变换就是把经过列混淆得到的State与密钥进行异或运算,也就是State的第1列与密钥的第1列进行异或运算,运算结果替换State的第1列,后面的几列以此方法类推。2 实现过程2.1 定义类CASE作为AES算法的实现类2.2 在CAES类中实现SetKeys方法,该方法用于指定密钥及轮密钥加运算的次数4 结束语在商业企业的计算机中往往存在大量的机密文件,
5、这些机密文件对企业的发展将会产生不可估量的作用。如果这些机密文件保管不善,将会使企业遭受巨大的损失。AES是一个新的可以用于保护电子数据并被广泛使用的加密算法。.jyqk].北京:清华大学出版社,2007:69-74.[2]张翟.加密解密与网络安全技术[M].北京:冶金工业出版社,2002.[3]段钢.加密与解密[M].北京:冶金工业出版社,2003.[4]徐海风,曹小军.软件加密方法及技术[J].山西冶金,2007,1.[5]魏光村,孙忠林,徐燕妮.软件加密技术研究[J].福建电脑,2009,
6、9.[6]IvorHorton.VisualC++2010入门经典[M].北京:清华大学出版社,2010.[责任编辑:汤静]
此文档下载收益归作者所有