- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《密码学》课程设计实验报告
实验序号:02 实验项目名称:分组密码AES
学 号
姓 名
专业、班
18信安
实验地点
指导教师
时间
实验目的及要求
教学目的:
掌握分组密码的基本概念;
掌握AES密码算法;
了解AES密码的安全性;
掌握分组密码常用工作模式及其特点;
熟悉分组密码的应用。
实验要求:
熟悉AES算法的基本结构;
掌握AES算法的基本运算;
掌握AES算法的实现与优化方法;
熟悉AES算法的安全性。
二、实验设备(环境)及要求
Windows操作系统,高级语言开发环境
三、实验内容与步骤
1. AES 算法的基本结构
输入:128位明文,128/192/256位密钥
子过程:
(1)S盒变换(教材 p86及p92表3-10)
(2)行移位(教材 p87表3-9)
(3)列混合(教材 p87及p93式3-32)
(4)轮密钥加(教材 p87)
输出:128位密文。
图:AES轮函数结构
图:AES轮密钥产生
2.AES算法的基本运算(重点)
方法:通过编程代码实现下列运算:
(1)上的加法(教材 p83定义3-2)
(为了描述方便,用花括号表示16进制,下同)
例:{BC}⊕{6A}={D6}(下图中的A3,3⊕K3,3=B3,3)
计算或编程方法:按位异或(提示——C、Java等语言中的^运算符)
(2)上的多项式加法(教材 p83定义3-7)
例:a(x)={BC}x3+{42} x2+{9F} x+{4C}
K(x)= {6A}x3+{00} x2+{5C} x+{57}
a(x) ⊕K(x)= {D6}x3+{42} x2+{C3} x+{1B}
计算或编程方法:按位异或(提示——C、Java等语言中的^运算符)
对于AES中的轮密钥加运算,即可以表示为对应“字节”的加法,每格相加,即定义3-2;也可以表示为对应32位“字”的加法,每列相加,即定义3-7;甚至可以表示为整个128位“状态”的按位异或。
思考:在不同CPU架构下,哪种表示方法的执行速度最快?
(3)上的乘法(教材 p83定义3-8)
(a)借助xtime运算快速实现
原理:复习有限域的性质——分配率
对于{02}·{??}(教材 p83定义3-5)定义为倍乘函数xtime,可以用移位运算和条件异或运算来快速实现。由于中的所有元素都可以表示为02的不同幂次的和,因此所有的乘法运算都能够通过重复调用倍乘函数xtime(定义3-5)和加法(定义3-2)快速实现。
例:y·{15}= y·{01⊕04⊕10}= y·{01⊕022⊕024}
= y⊕xtime(xtime(y))⊕xtime(xtime(xtime(xtime(y))))
= y⊕xtime(xtime(y⊕xtime(xtime(y))))
思考:该算法的效率分析?(最好情况、最坏情况)
改进:将xtime(y)的所有256种取值预计算,并造表。
(b)借助生成元快速实现
GF(2 8 )的全体非零元素对于乘法构成循环群。设a为生成元,则循环群
G ={a 0 ,a 1 ,…,a 254 }。
G中的乘法运算
a p ·a q = a (p+q)mod 255 ,
于是可以把GF(2 8 )上的乘法简化为整数的加法运算。注意,零元素00与任何元素相乘都得00。
例:{57}·{83}={C1}
计算或编程方法:
步骤1:(准备阶段)造表
预计算两个256字节的表:生成元为03的指数表(附表5)和生成元为03的对数表(附表6)
步骤2:查对数表
Log{03}{57}= 98 (注:指数表和对数表是16进制表述,高位-行号,低位-列号)
Log{03}{83}= 80
步骤3:{57}·{83}={03}98·{03}80={03}98+80 mod 255={03}178
步骤4:查指数表{03}178={03}{B2}=193={C1}
思考:该算法的效率分析?(时间复杂度、空间复杂度)
(4)上的多项式乘法(教材 p83定义3-8、p93优化方案)
(a)AES中的列混合运算的实现
其中的运算按列(32位字)实现,当然也可表述为下面的4×4的字节矩阵相乘:
大家手工计算时,按列进行表述较为简单:
例如下面的列混合计算:
其中的第一列运算步骤为:
在GF(28)中,加法就是按位XOR操作,乘法是根据在上述方程所示的规则执行的。注意将某值乘上x(即{02})其结果就是将该值向左移一位, 如果该值的最高位为1,那么在移位后还要异或(0001 1011)。(参考xtime的快速实现方法)
网络工程师持证人
本人已从事浙江省工程咨询5年,对浙江省内工程信息非常熟悉,可获取新建工程相关联系人、设计院、业主等关键信息。另外从事楼宇自控专业已10年,考取了一建二建等资格证书,有关考试方面的问题(考试心得、方法、学习资料等)都欢饮来咨询交流。
文档评论(0)