信息安全技术报告 -模板..docVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华中科技大学 研究生课程考试答题本 《信息安全技术》课程项目报告 考生姓名 考生学号 系、年级 类 别 考试科目 信息安全技术 提交日期 评 分 总分 完整的AES分组与文件的加解密功能程序实现 1 前言 本文论述了AES分组与文件的加解密程序在Window环境下用C++语言的实现。随着的发展AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。C++ 开发工具:Visual C++ 6.0 操作系统:Window 7 2.2 AES算法基础 (1) AES算法的设计准则 Rjindael算法的设计原则 Joan Daemen和Vincent Rijmen在设计Rijndael算法时主要考虑以下三点: Rjindael采用的是代替/置换网络,即SP结构。每一轮有三层组成:P层为线性层,它包括ShiftRows变换和MixColumns变换,线性混合层确保多轮之上的高度扩散;S层为非线性层,由一个SubBytes变换组成,具体由非线性S-盒构成,起到混淆作用;密钥加层由AddRuondKey变换组成,将子密钥简单的异或到中间状态上,实现密钥与明文或密文的结合。 (3) 行变换和列混合设计 线性变换层,包括ShiftRows和MixColumns变换,其目的是提供雪崩效应,从而起到扩散作用。 MixColumns变换将状态阵列中的一个字节扩散到该字节所在列的每个字节中,ShiftRows变换则将原来处在同一列上的字节扩散到不同的列中。Rjindael算法P层的设计起到了很好的扩散作用,提高了抵抗差分密码攻击能力,这种设计同时也可有效抗击截短差分攻击和Square攻击。 (4) 字节替换设计 AES 定义了一个 S 盒,State 中每个字节按如下方式映射为一个新的字节:把该字节的高 4 位作为行值,低4 位作为列值,然后取出 S 盒中对应行和列的元素作为输出。 图2-1 S盒映射到State S ×16 字节组成的矩阵,包含了 8 位值所能表达的256种可能的变换。S盒按以下方式构造: 1)逐行按升序排列的字节值初始化 S 盒。第一行是 {00},{01},{02},…,{0F} ;第二行是 {10},{11},…, {1F} 等。在行 x 和列 y 的字节值是 {xy}。 伽罗瓦域,GF(28)由一组从0×00 到0×ff的 256个值组成,加上加法和乘法。GF(28)=Z2[X]/( x8+x4+x3+x+1)。{00} 被映射为它自身 {00}。 3)把 S 盒中的每个字节记成(b7,b6,b5,b4,b3, b2,b1,b0)。对 S 盒中每个字节的每位做如下矩阵方式所描述变换: 图2- S盒 (5) 轮密钥加设计 轮函数实现的功能是把轮密钥加到状态中去。它执行了16个并行的把密钥加到状态中的运算。加法是通过异或运算来完成的: 图2-3 轮密钥加 其中,k矩阵是一个轮密钥,并且每一轮都有一个唯一的密钥。 2.3 AES算法详细描述 2.3.1 AES算法描述 Rjindael算法是一个数据块长度和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长度可以为128、192、256位。在加密前对数据块做预处理。首先,把数据块写成字的形式,每个字包含4个字节。其次,把字记为列的形式(如图2-3),AES把128位的输入看作是一个由16个字节组成的向量,并用一个4×4的列矩阵的形式来组织,叫做“状态”(state)。 按同样的方式组织密钥,得到一个k矩阵(如图2-4所示): 图2-4 对数据块预处理并得到k矩阵 我们用Nb表示一个数据块中字的个数(列的个数),那么Nb=4,6或8;用Nk表示密钥中字的个数(列的个数),那么Nb=4,6或8。 算法轮数Nr由Nb和Nk共同决定,如表一所示: 表1 Nr值与Nb和Nk的关系 Nr Nb = 4 Nb = 6 Nb = 8 Nk = 4 10 12 14 Nk = 6 12 12 14 Nk = 8 14 14 14 2.3.2字节代换--非线性混合层的S变换 字节代换(ByteSub)是作用在字节上的一种非线性变换,这个变换(或称S-box)是可逆的。它由以下两个部分组成: 把字节的值用它的乘法逆代替; 把经过a处理后的字节进行如下定义的仿射变换 乘

文档评论(0)

fg09h0as + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档