版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五哈希函数实验哈希函数的一个重要作用是在对待签名文件进行数字签名之前产生消息摘要。一、实验目的熟悉摘要算法 SHA-1算法,SHA是英文Secure Hash Algorithm的缩写。通过运用高级 程序设计语言,编程实现 SHA-1算法,加深对单向哈希函数进行消息压缩的理解。二、实验原理哈希函数又称杂凑函数、散列函数,它可以将任意长度的消息压缩成某一固定长度的消 息摘要。目前使用的大多数哈希函数如 SHA-1(Secure Hash Algorithm)都是采用 Merkle于 1979年提出的基于压缩函数 f的哈希函数结构,具有单向函数性质的摘要算法。消息摘要可 以用来验证接收到的消息
2、的数据完整性。如果消息在传输的过程中发生变化,那么变化后的消息会产生不同的消息摘要。对于长度小于264比特的消息,SHA-1算法对消息以512比特的固定长度为单位, 分组 进行处理。如果原始消息的长度超过了512比特,就把整个消息分成若干个 512比特的消息块,分别处理。最终,SHA-1算法产生一个160比特的消息摘要(哈希值)。如果消息长 度大于264比特,则以264为模数取模。SHA-1算法包括以下5个步骤:(1)消息填充SHA-1算法首先对输入消息进行填充,使得消息长度的比特数模512后余数是448,即消息扩展至k*512+448二进制位,k为非负整数。需要注意的是即使消息长度一开始就满
3、足 模512后余448的要求,仍然需要填充。具体的填充操作为,先补一个1,然后再补若干个0,直到消息长度满足模 512后余数为448。因此,填充的比特数在1512比特之间,最少补1比特,最多补512比特。【举例1】假设我们对字符串“ abc”产生消息摘要,以下说明填充的过程。首先,将字符串“ abc”转换成比特串的形式:城 97b= 98,c= 99原始信息:01100001 01100010 01100011填充第一步:01100001 01100010 01100011 1首先填充一个“1 ”填充第二步:01100001 01100010 01100011 10 .0然后填充423个“0”
4、我们把完成填充后的消息用十六进制表示如下:61626380 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000现在,消息的长度是 448比特了,可以进行下一步操作。(2)填充长度所谓填充长度是将原始消息的长度填充到已经进行了填充操作的消息后面。通常用一 个64比特的数据来表示原始消息的长度。由消息填充的操作可知,经过填充后的最后一个 消息块为448比特。对于512比特的数据块,除掉 448比特用于放置最后一个消息块,还
5、有64比特用于存放原始消息(填充前的消息)的长度。填充长度后,整个数块长度为k*512+44 8+64 = (k+1)*512比特。如果消息长度不大于 264,那么64比特数据的最高位就是 0。【举例2】假设对字符串“ abc”产生消息摘要,填充长度后,整个消息变为下面这样(十 六进制格式):61626380 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 00000018(3)初始化MD缓冲区SH
6、A-1算法的中间结果和最终结果保存在 160比特的缓冲区中。 缓冲区用5个32比特 长的寄存器(A、B、C、D、E)表示。每个寄存器占用一个字(每个字占用4个字节,即1 word = 4 bytes)。这些寄存器初始化为下列 32比特的整数(十六进制):A = 0 x67452301B = 0 xEFCDAB89C = 0X98BADCFED = 0 x10325476E = 0 xC3D2E1F0.令 Ho = A, H 1 = B, H 2 = C,H3 = D, H4 = E。其中,前四个值与 MD5算法中使用的值相同,但在SHA-1算法中这些值按最高有效字节优先的顺序存储数据,即最高有
7、效字节存储在低地址字节位置。SHA-1算法的这种存储顺序类似处理器处理字节与字转换操作的大端字节顺序(Big Endian)。(4)消息压缩SHA-1算法的压缩函数由四轮运算组成,每一轮都对寄存器A、B、C、D、E进彳T 20 步迭代运算。这四轮运算结构相同,但每轮使用的逻辑函数不同。每个逻辑函数都操作寄 存器B, C, D,产生32比特的输出。四轮的逻辑函数定义如下:ft (B, C, D) = (B AND C) or (NOT B) AND D) ( 0 t 19)ft (B, C, D) = B XOR C XOR D(20 w t w 39)ft (B, C, D) = (B AND
8、 C) or (B AND D) or (C AND D) (40 & t 59)ft (B, C, D) = B XOR C XOR D(60 t 79).SHA-1算法的四轮运算还要用到一系列的加法常量字K,定义如下(十六进制):Kt = 0X5A827999 (0 t 19)Kt = 0X6ED9EBA1 (20 t 39)Kt = 0X8F1BBCDC (40 t 59)Kt = 0XCA62C1D6 (60 t 79)计算消息摘要还需要 80个32比特的缓冲区,记为 Wo, Wi,., W79。另外还需要一个 32 比特的TEMP缓冲区。为了产生消息摘要,将经过了消息填充和长度填充后
9、的一个512比特的数据块分组存放在16个32比特长的数据块 Mi, M2,., M15中。依次对于 Mn (0 nW 15)进行四轮、八 十步处理。具体的处理步骤如下: 初始化 Wt (0 t 79)。 = M0, Wi= Mi, . , W15 = M15。对于 16 W t W 79,令 Wt = CLS1(Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16)。CLSn 表示 32 比特的变量循环左移 n 位。例 如,CLS1表示32比特的变量循环左移 1位。对于0 W t W 79,执行下面的操作:TEMP = CLS 5(A) + ft (B, C, D) + E +
10、Wt + Kt;E = D; D = C; C = CLS 30(B); B = A; A = TEMP。图5-1示意出SHA-1执行一步迭代的过程。每个512比特的分组处理完成后,执行:Ho = Ho + A, H 1 = Hi + B, H 2 = H2 + C, H3 = H3 + D, H4 = H4 + E。(5)输出摘要在处理完所有的k+1个512比特的数据块后,最后一个数据块M15的消息摘要就是整个(k+1)*512比特数块的消息摘要,以 ABCDE的顺序标识,其长度为 160比特。图5-1 SHA-1 一步迭代过程三、实验环境操作系统:Windows 2000/XP/2003或
11、以上版本。应用软件:VC+ 6.0或以上版本。实验软件包:SHA1工程、sha1.txt。四、实验内容和任务本实验要求学生在掌握哈希函数SHA-1算法的基础上,运用高级程序设计语言编程实现SHA-1算法,并通过具体运算测试函数的功能。表5-1给出SHA-1算法函数的接口定义,作为编程实现的参考。表5-1 SHA-1算法函数接口函数void SHA1Reset(SHA1Context *context)功能SHA-1初始化输入context : SHA1Context类型的变量,保存消息的长度、消息的摘要等信息。输出context函数void SHA1Input( SHA1Context *co
12、ntext, const char *message_array,unsigned int length)功能将消息按照512比特长度分组。对于长度为512比特的消息分组进行SHA-1算法操作。输入context :保存消息的长度、消息的摘要等信息);message_array:消息;length :消息的字节数。输出context函数void SHA1ProcessMessageBlock(SHA1Context *context)功能进彳T SHA-1算法操作输入context:保存消息的长度、消息的摘要等信息。输出context函数void SHA1PadMessage(SHA1Cont
13、ext *context)功能将最舟-个消息分组进行补位和填充消息长度,然后进行SHA-1算法操作输入context:保存消息的长度、消息的摘要等信息。输出context函数void SHA1Result (SHA1Context *context)功能进行最后1个或2个512bits块的消息压缩操作,得到 160bits结果输入context:保存消息的长度、消息的摘要等信息。输出context如图5-1所示,在消息编辑框中输入消息,点击“ SHA-1生成摘要”,计算消息的摘要。点击“清空”按钮,可清空消息编辑框,以便重新输入。图5- 1基于SHA-1算法的消息摘要生成工具界面五、实验步骤本实验的大致步骤如下:1.安装好所需的操作系统和 VC+6.0集成开发环境。2,下载实验软件包 SHA1工程和SHA1.txt。如果还不熟悉 VC+6.0的集成开发环境,请参 考相关书籍熟悉其界面、窗口、常用调试命令等。3,根据本实验指导书、SHA1.txt以及SHA1工程中的SHA1Dlg.cpp和SHA1ACT.cpp的提示,完成图5-1界面中的“ SHA-1生成摘要”和“清空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度光伏发电项目包工包料施工协议3篇
- 2025年度别墅区物业合同风险管理指南3篇
- 2024年能源市场居间服务合同标准
- 国开《心理咨询入门》形考任务1-3
- 2024年电商平台与物流公司仓储配送合同
- 2025年度海洋工程设备融资租赁合同保证人海洋环境担保书3篇
- 2025年度学校消防安全设备安装与定期检查合同3篇
- 钢板盖板施工方案
- 2024年河砂交易协议
- 冬季土方施工方案
- 天一大联考海南省2025届高一上数学期末学业水平测试模拟试题含解析
- 期末家长会(课件)小学生主题班会
- 9 古代科技 耀我中华(教学设计)部编版道德与法治五年级上册
- 数字政府建设课件
- 2025届江西省景德镇市八年级数学第一学期期末质量跟踪监视试题含解析
- 小学美术桂美版三年级上册《第8课画身边的小物件》省级名师授课教案课教案获奖教案公开课教案A001
- 光电子技术(第二版)全套课件电子教案板
- 统编版(2024新版)七年级上册历史期末复习全册知识点考点提纲
- 高中英语单词默写卡片新人教版必修二Unit1
- 无菌技术操作评分标准
- 《社群运营》全套教学课件
评论
0/150
提交评论