密码学实验(AES,RSA)概念.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华北电力大学 实 验 报 告 | | 实验名称 现代密码学课程设计 课程名称 现代密码学 | | 专业班级: 学生姓名: 学 号: 成 绩: 指导教师: 实验日期: [综合实验一] AES-128加密算法实现 一、实验目的及要求 (1)用C++实现; (2)具有16字节的加密演示; (3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB. 二、所用仪器、设备 计算机、Visual C++软件。 三. 实验原理 3.1、设计综述 AES中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。State可以用4×4的矩阵表示。AES算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。AES算法的主循环State矩阵执行轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey,(由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。最后执行只包括 3个阶段 (省略 MixColumns变换)的最后一轮运算。 表2 AES参数 密钥长度(bits) 128 192 256 明文分组长度(bits) 128 128 128 轮数 10 12 14 每轮密钥长度(bits) 128 128 128 扩展密钥长度(bytes) 176 206 240 基本要求按标准分组,以128比特为分组大小。所以轮数为10轮,密钥长度也为128比特。 3.2、字节代替(SubBytes) AES定义了一个S盒,State中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S盒中对应行和列的元素作为输出。例如,十六进制数{84}。对应S盒的行是8列是4,S盒中该位置对应的值是{5F}。 S盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。S盒按照以下方式构造: 逐行按照升序排列的字节值初始化S盒。第一行是{00},{01},{02},…,{OF};第二行是{10},{l1},…,{1F}等。在行X和列Y的字节值是{xy}。 把S盒中的每个字节映射为它在有限域GF()中的逆。GF代表伽罗瓦域,GF()由一组从0x00到0xff的256个值组成,加上加法和乘法。。{00}被映射为它自身{00}。 把S盒中的每个字节记成。对S盒中每个字节的每位做如下变换: 上式中是指值为{63}字节C第i位,即。符号()表示更新后的变量的值。AES用以下的矩阵方式描述了这个变换: 最后完成的效果如图: 3.3、行移位(ShiftRows) 一.State的第一行字节保持不变,State的第二行字节循环左移一个字节,State的第三行字节循环左移两个字节,State的第四行循环左移三个字节。 行移位左偏移量: 变化如图2所示。 3.4、列混合(MixColumn) 一.列混合变换是一个替代操作,是AES最具技巧性的部分。它只在AES的第0,1,…,Nr一1轮中使用,在第N r轮中不使用该变换。乘积矩阵中的每个元素都是一行和一列对应元素的乘积之和。在MixColumns变换中,乘法和加法都是定义在GF()上的。State的每一列 () 1=0,…,3;J=0,…,被理解为 GF()上的多项式,该多项式与常数多项式相乘并模约化。 这个运算需要做GF()上的乘法。但由于所乘的因子是三个固定的元素02、03、01,所以这些乘法运算仍然是比较简单的(注意到乘法运算所使用的模多项式为)。设一个字节为b=(b7b6b5b4b3b2b1b0),则 bב01’=b; bב02’=(b6b5b4b3b2b1b00)+(000b7b70b7b7); bב03’=bב01’+b×’02’。 (请注意,加法为取模2的加法,即逐比特异或) 写成矩阵形式为: 最后完成的效果如图: 3.5、轮密钥加(AddRoundKey) Add RoundKey称为轮密钥加变换,128位的State按位与 128位的密钥XOR:对 j=0,… ,L-1 轮密钥加变换很简单,却影响了 State中的每一位。密钥扩展的复杂性和 AES的其他阶段运算的复杂性,却确保了该算法的安全性。 最

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档