- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AES在网上冲印系统中应用
AES在网上冲印系统中应用
摘要:随着电子商务的发展,信息的安全性急需要得到加强。本文根据当前的需要,对最新的AES加密算法进行研究,简绍了AES算法的结构、加解密过程,并采用C++实现了AES算法,验证了实现的正确性和其加密性能。并把实现应用到网上冲印系统中使其安全性得到增强。
关键词:AES;加密算法;Rijndael;网上冲印
1 引言
随着Internet的迅速发展,个人移动通信、电子邮件通信得到普及,网上证券交易、银行电子自动转帐支付系统、电子商务、电子政务得以实现,这为人们的生活、学习和工作带来了极大的方便,但人们也更加关心信息的安全传输、安全存储和安全管理。信息安全已成为人们关注和研究的重要课题,而密码算法的理论与实现研究是信息安全研究的核心。
2 算法介绍
现在广泛使用的DES,随着计算技术和计算速度的发展,安全性面临越来越严峻的挑战。临时方案三重DES也没有从根本上解决问题。于2000年10月宣布两位比利时的密码专家Joan Daemin和Vincent Rijmen提出的Rijndael算法被选择为AES的最终算法[1]。
AES算法是可变分组长和可变密钥长的迭代分组密码,而且分组长和密钥长是不相关的。分组长度有三种情况:128bit、192bit和256bit。运算时分组长度被分成4行N列的字节矩阵。字节矩阵又称为“状态”,用State表示。算法主要由字节替换、行移位、列混合和轮密钥加四个运算部分组成[2]。
四种变换
1) 字节替换(SubByte)
字节替代是对状态阵列的字节到字节的变换,它使用字节替代表(S-盒)作用于状态阵列的每个字节。S-盒通过以下两步来构造:
a)将字节看作GF(28)的元素,并映射到自己的乘法逆,元素{00}映射到它自身;
b)将该逆元字节作GF(2)上的如下仿射变换:
采用SubByte变换后,字节元素至少有两个比特发生变换,具有很好的混淆作用。InvSubByte是SubByte的逆变换,它使用逆S-盒作用在每个字节上,先求逆仿射变换得到一个字节,再求该字节的乘逆,就可构造逆S-盒。
2)行移位(ShiftRow)
行移位是AES算法的线性运算中的一个部分,行移位的方案只与状态有关。第一行的元素不移动,第二、三、四行向左循环移动不同的字节数。行移位变换中状态循环移位的字节数如表1。ShiftRow循环移位操作对i行j列的字节循环移动后的位置是 。其中Nb是分组长的列数,Ci为第i行移动的字节数。
3)列混合(MixColumn)
列混合运算采用系数在GF(28)下的多项式与固定多项式b(x)相乘,得到的结果取膜x4+1,即列混合的结果 。
其中
4)轮密钥相加(AddRoundKey)
轮密钥长度与分组长度相等,将状态State与轮密钥进行简单的有限域 下的加法操作。
密钥扩展
AES算法中每轮加密的轮密钥是利用密钥扩展算法(KeyExpansion)对加密密钥扩展得到的。密钥扩展及轮密钥选择的原理是对加密密钥扩展得到轮密钥,轮密钥的总位数等于分组长度乘以轮数加1;在密钥扩展得到的轮密钥中依次选取与分组长度相同数目的密钥用于轮密钥加运算。
加密/解密运算
AES算法中分组长和密钥长的组合决定了需要加密多少轮才能达到安全的要求。加密轮数与分组长和密钥长的对照表如表2,Nb是分组长的列数,Nr加密轮数,Nk密钥长的列数。
AES算法的整个加密流程中,轮加密(Round)顺序采用SubByte、ShiftRow、MixColumn和AddRoundKey四个变换,而初始轮只采用AddRoundKey变换,而最后一轮少一个MixColumn变换。
3 AES算法测试
3.1 正确性测试
本文对密钥扩展模块和加/解密模块进行测试,所有的测试向量均来自FIPS PUBS 197。模块的输入为十六进制数表示的字符组成的初始密钥,输出为产生的密钥字符的十六进制数表示。每一字符均用两位十六进制数表示。密钥扩展产生的结果与FIPS PUBS 197(32)给出的结果完全相同;加解密的结果与FIPS PUBS 197(46)给出的结果相同,由此得到密钥扩展和加解密模块实现是正确的。
3.2 性能测试
本文采用对同一分组n次加密的方法进行时间测试。假设测到的时间为t,则加密一个分组所需时间为t/n秒,测试取n=2x108。每一种密钥下测试多次(下表取3次测试数据),取平均值即为该加密时的速度。测试的加密性能数据见表3。
4 在网上冲印系统
文档评论(0)