《密码学》课程设计实验报告-分组密码DES2.docxVIP

《密码学》课程设计实验报告-分组密码DES2.docx

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

文档评论(0)

浙江工程信息通 + 关注
实名认证
服务提供商

网络工程师持证人

本人已从事浙江省工程咨询5年,对浙江省内工程信息非常熟悉,可获取新建工程相关联系人、设计院、业主等关键信息。另外从事楼宇自控专业已10年,考取了一建二建等资格证书,有关考试方面的问题(考试心得、方法、学习资料等)都欢饮来咨询交流。

领域认证该用户于2023年05月11日上传了网络工程师

1亿VIP精品文档

相关文档