网站大量收购独家精品文档,联系QQ:2885784924

密码编码学与网络安全试验报告题目试验十一SHA512算法姓名.DOC

密码编码学与网络安全试验报告题目试验十一SHA512算法姓名.DOC

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密码编码学与网络安全试验报告题目试验十一SHA512算法姓名

《密码编码学与网络安全》实验报告 题目:实验十一 SHA512算法 姓名 戴光昱 052433 信息安全 实验环境:Windows XP Sp2 硬件环境:CPU:Intel Core 2 Duo T7100 硬盘:120G 内存:2G 实验要求: 应用SHA512算法编写一个程序。要求此程序能够进行正常的信息摘要。要求按照书中提供的算法进行模拟。 实验原理: SHA512逻辑原理如下: 算法的输入时最大长度小于2128比特的消息串,输出是512比特的消息摘要,输入消息以1024比特的分组为单位进行处理。此过程包含以下步骤: 步骤一:附加填充位。填充消息使其长度模1024与896同余,即使消息已经满足上述长度要求,仍然需要进行填充,因此填充位数在1到1024之间。即填充由一个1和后续的0组成。 步骤二:附加长度。在消息后附加一个128比特的块,将其看作是128比特的无符号整数(最高有效字节在前),它包含填充前消息的长度。 前两步是产生一个长度为1024整数倍的消息。 步骤三:初始化散列缓冲区。散列函数的中间结果和最终结果保存于512比特的缓冲区中,缓冲区用8个64比特的寄存器(a,b,c,d,e,f,g,h)表示,并将这些寄存器初始化为下列64比特的整数(十六进制值): a=6A09E667F3BCC908 e=510E527FADE682D1 b=BB67AE8584CAA73B f=9B05688C2B3E6C1F c=3C6EF372FE94F82B g=1F83D9ABFB41BD6B d=A54FF53A5F1D36F1 h=5BE0CD19137E2179 步骤四:以1024比特的分组(16个字)为单位处理消息。算法的核心是具有80轮运算的模块。 每一轮都把512比特缓冲区的值abcdefgh作为输入,并更新缓冲区的值。第一轮,缓冲区里的值是中间的散列值Hi-1。每一轮,如t,使用一个64比特的值Wi,该值由当前被处理的1024比特消息分组Mi导出,导出算法是下面将要讨论的消息调度算法。每一轮还将使用附加的常数Kt,其中0≤t≤79,用来表示轮数。这些常数如下获得:前80个素数取三次根,取小数部分的前64比特。这些常数提供了64比特随机串集合,可以消除输入数据里的任何规则性。 第80轮的输出和第一轮的输入Hi-1相加产生Hi。缓冲区里的8个字和Hi-1里的相应字独立进行模264的加法运算。 步骤五:输出。所有的N个1024比特分组都处理完以后,从第N阶段输出的是512比特的消息摘要。 总结SHA-512的运算如下: H0=IV Hi=SUM64(Hi-1,abcdefghi) MD=HN IV:第三步里定义的abcdefgh缓冲区的初始值。 abcdefghi:第i个消息分组处理的最后一轮的输出。 N:消息(包括填充和长度域)里的分组数。 SUM64:对输入对里的每个字进行独立的模264加。 MD:最后的消息摘要值。 实验内容及过程: 1.数据结构定义部分: K:64位型一维数组,静态,用于存储80轮当中的附加常数K值,unit64为宏定义,实质为longlong型,64位。 S:64位型一维数组,静态,用于存储每一轮的缓冲区。 W:64位型一维数组,静态,用于存储80轮当中的由Mi导出的值,用于每一轮的混淆运算。 2.基本函数用途说明: sha_compress:用于将读入文件分压缩成1024位大小的分组单位。另外进行了W和S数组的初始化。 sha_init512:用于缓冲区的初始化。 sha_process512:用于SHA512的每一轮W数值的置数。 sha_done512:用于SHA-512 hash码的输出。 sha_file:sha512读入文件,进行散列值输出。 3.主要的算法思想: 1.1024bit分组,S缓冲区初始化,W[80]置数。 static void sha_compress(sha_state512 *md) { UINT64 S [8], W [80], t0, t1; int i; /* 将缓冲区复制入S数组 */ memcpy (S, md-state, 64); /* 初始化W0-15*/ for (i = 0; i 128; i+=8) W [i3] = ((UINT64)md-buf [i + 0]) 56 | ((UINT64)md-buf [i + 1]) 48 | ((UINT64)md-buf [i +

文档评论(0)

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

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

1亿VIP精品文档

相关文档