sha256摘要实现_第1页
sha256摘要实现_第2页
sha256摘要实现_第3页
sha256摘要实现_第4页
sha256摘要实现_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成都信息工程学院课程设计报告SHA256摘要软件的实现课程名称:应用密码算法程序设计 学生姓名: 金文慧 学生学号: 2006122001 专业班级: 06级信息安全一班 任课教师: 张金全 2009年 4 月 14 日附件:课程设计成绩评价表指导老师评阅成绩表学习与工作态度(30%)选题的价值与意义(10%)文献综述(10%)研究水平与设计能力(20%)课程设计说明说(论文)撰写质量(20%)学术水平与创新(10%)总分指导老师签名: 年 月 日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题的价值与意义1098764文献综述1098764研究水平与设计能力201917151310课程设计说明书(论文)撰写质量201917151310学术水平与创新1098764答辩效果302825221915是否同意论文(设计)通过答辩同意 不同意答辩小组成员签名答辩小组组长签名: 年 月 日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分指导老师评分50%答辩小组评分50%目 录1引言11.1 背景11.2 目的11.3 本设计的主要任务12.系统设计12.1主要软件需求(运行环境)12.2 系统结构22.2.1软件操作流程22.2.2功能模块23 系统功能程序设计23.1 SHA256构造23.2初始化33.3计算33.4摘要53.5 SHA256析构63.12部分关键外部接口设计63.13程序界面预览74. 测试报告81文本测试82文件测试85参考资料96结论9参考文献91引言1.1 背景SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。此外有四种变体,以提升输出的范围和变更一些细微设计: SHA-256,就是其中之一。1.2 目的在网络中传输的信息,有时会遭到各种攻击。接收者需要有一种机制来验证自己收到的信息来源是否真实,信息是否完整,验证信息在传送或存储过程中未篡改,重放或延迟等。SHA-256可以对消息进行摘要,生成固定长度的消息摘要,随信息一起发送,可以验证信息的真实完整性。1.3 本设计的主要任务根据SHA-256算法实现任意长度的文本,任意大小任意格式的文件进行摘要,并生成固定长度的消息摘要。向用户提供良好的界面,良好的操作性。2.系统设计2.1主要软件需求(运行环境)本软件适用VC语言编写,编译成功后的EXE文件可以在装有windows系统的任何计算机上使用。输入: 二进制,十六进制,ASCII码等格式的信息,也可以是汉字或英文,或者是文本文档,可以是多个分组;也可以是各种类型的文件;输出:512位固定长度的消息摘要;注:对于本软件所涉及到的输入,输入字符均以ASCII码和UNICODE码处理输出字符均是16进制数。测试平台:Windows XP 2.2 系统结构2.2.1软件操作流程摘要文本:(1)选择“文本”,程序将自动使“文件”相关的的输入框和按钮无效,避免不当操作。软件默认选择“文本”。(2)在文本输入框中输入要加密的文本,文本可以是二进制数,十六进制数,十进制数,英文,符号,汉字等。系统将输入的文本以ASCII码处理,汉字以UNICODE码处理。(3)点击“文本加密GO”按钮,进行摘要。(4)摘要完成后,系统自动显示输入消息的长度及摘要后的摘要值。(5)如需继续摘要文本,可在文本框内重新输入信息。(6)使用完毕,点击“关闭”按钮,关闭软件。摘要文件:(1)选择“文件”选项,程序将使“文本”相关的输入框和按钮无效,避免不当操作。(2)在输入框中输入文件路径或点击“浏览”按钮,弹出系统文件菜单,选择要摘要的文件,系统自动在输入框中显示文件路径。(3)点击“文件摘要GO”按钮,进行摘要。(4)摘要完成后,窗口自动显示摘要值。(5)如需继续使用,可重新选择文件。(6)使用完毕,点击“关闭”按钮,关闭软件。2.2.2功能模块编 号模 块 名 称模 块 标 识1SHA256构造Csha256:Sha256_init2初始化Csha256:Sha256_reset3计算Csha256:Sha256_calculate4摘要Csha256:Sha256_Block5SHA256析构Csha256:Sha256_uninit3 系统功能程序设计 3.1 SHA256构造这个函数其实就是构建一个SHA256类,调用Csha256:Sha256_reset函数,返回一个Csha256类的指针signed long Csha256:Sha256_init(Csha256* t )return Sha256_reset( t ); 3.2初始化初始化函数,将准备字和数据置零,初始化h0-h7signed longCsha256:Sha256_reset(Csha256* t )/*初始化函数*/ int x;t-reg0=0x6a09e667;t-reg1=0xbb67ae85;t-reg2=0x3c6ef372;t-reg3=0xa54ff53a;t-reg4=0x510e527f;t-reg5=0x9b05688c;t-reg6=0x1f83d9ab;t-reg7=0x5be0cd19; /*h0-h7初始化*/for( x = 0; x Padding x = t-DwordBuf x = 0; t-ByteNumLo = t-ByteNumHi = t-DwordBufBytes = 0;return 0; 3.3计算这个函数的功能是对输入的数据进行分组和填充处理,调用block函数进行计算,并将最后的摘要结果写入value数组。对于那些长度达到64字节的数据块,调用block函数进行处理对于长度不足64字节的数据块,要进行数据填充。在最后一块数据的最后两个字节要添加数据长度。signed longCsha256:Sha256_calculate(Csha256* t, char* dp, signed long dl )/* x - 数据缓冲区偏移y - 字节偏移值 * 8z - 已处理的数据w - 64Bytes块数*/z = (int)( t-ByteNumLo & 0x7fffffff ) + dl);x = ( t-ByteNumLo 31 ) & 0x01 ) + ( z 31 ) & 0x01 );z = ( z & 0x7fffffff ) | ( x ByteNumHi + ( x 1 );if( y 0x1fffffff )/*超过这个值的话,当前的系统无法处理*/ return 10; t-ByteNumLo = z; t-ByteNumHi = y;for( w = 0; w Padding w = t-DwordBuf w ; /*前16个准备字填充以数据*/for( w = 0; w reg w ; /*最初的h0-h7填充*/x = t-DwordBufBytes / 4;y = ( t-DwordBufBytes & 3 ) * 8;w = (int)( t-DwordBufBytes + dl ) 6 ) & 0x03ffffff );z = 0;/* 64Bytes 整数据块循环*/while( w 0 )while( x Padding x = ( t-Padding x & ( 0x000000ff ( 24 - y ) | ( dp z & 0x000000ff ) 5 ); y &= 0x1f; z +; Sha256_Block( t-Padding, reg );x = y = 0; w -;/* 清空数据 */if( x | y ) = 0 )for( w = 0; w DwordBuf w = t-Padding w = 0; /* 最后一块数据循环z 是已经处理的数据数. dl 是要处理的总数据的大小,dl大于z. */w = (int)( dl - z ); while( w 0 )t-DwordBuf x = t-Padding x = ( t-Padding x & ( 0x000000ff ( 24 - y ) | ( dp z & 0x000000ff ) 5 ); y &= 0x1f; z +;w -;/* 填数据1后面跟一串0 */t-Padding x |= 0x00000080 DwordBufBytes = x * 4 + ( y 3 );if( t-DwordBufBytes 55 )Sha256_Block( t-Padding, reg );for( w = 0; w Padding w = 0; /* 添加数据长度 */t-Padding 15 = t-ByteNumLo Padding 14 = ( t-ByteNumLo 29 ) & 0x3 ) | ( t-ByteNumHi Padding, reg );3.4摘要对每一组数据进行处理,使用SHA256的6个逻辑函数。进行64轮迭代计算。得到每一组数据的处理结果。signed longCsha256:Sha256_Block( int* dp, int* rp )for( x = 16; x 7 ) & 0x1ffffff ) | ( dp x - 15 18 ) & 0x3fff ) | ( dp x - 15 3 ) & 0x1fffffff );/*0函数*/t1 = ( dp x - 2 17 ) & 0x7fff ) | ( dp x - 2 19 ) & 0x1fff ) | ( dp x - 2 10 ) & 0x3fffff );/*1函数*/dp x = dp x - 16 + t0 + dp x - 7 + t1;a = rp0; b = rp1; c = rp2; d = rp3; e = rp4; f = rp5; g = rp6; h = rp 7 ;/*主循环 */for( x = 0; x 2 ) & 0x3fffffff ) | ( a 13 ) & 0x7ffff ) | ( a 22 ) & 0x3ff ) | ( a 6 ) & 0x3ffffff ) | ( e 11 ) & 0x1fffff ) | ( e 25 ) & 0x7f ) | ( e 7 );/*1函数*/t0 = ( e & f ) (e) & g );/*Ch函数*/t1 = h + t1 + t0 + Sha256_k x + dp x ;h=g; g=f; f=e; e=d+t1; d=c; c=b; b=a; a=t1+t2; rp0 += a; rp1 += b; rp2 += c; rp3 += d; rp4 += e; rp5 += f; rp6+=g; rp7+=h;return 0;3.5 SHA256析构返回一个0值signed longCsha256:Sha256_uninit(Csha256* t ) return 0; 3.12部分关键外部接口设计如下表:接口名称接口类型接口功能选择文本摘要无线按钮选择文本摘要方式选择文件摘要无线按钮选择文件摘要方式文本文本框输入要摘要的文本文本摘要按钮进行文本摘要 文件路径文本框输入要摘要的文件的路径浏览按钮浏览电脑中的文件路径并选择要摘要的文本文件摘要按钮进行文件摘要文本长度文本框显示文本长度摘要值文本框输出摘要值清空文本框按钮清空文本框内容,将文本长度置零清空摘要按钮清空摘要内容退出按钮退出程序3.13程序界面预览程序运行后生成的界面如下:运行后默认的选择是“文本”摘要,在文本框内输入要摘要的文本。文本可以是二进制数,十六进制数,十进制数,英文,符号,汉字等。点击“文本摘要GO”按钮,生成固定长度的摘要值。选择“文件”并确定文件路径,文件可以是文本文件,或者其他任何格式的文件。点击“文件摘要GO”按钮,生成固定长度的摘要4. 测试报告1文本测试(1)数字1234567890消息长度:10摘要值:c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646(2)小写字母a消息长度:1摘要值:ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb(3)大写字母A消息长度:1摘要值:559aead08264d5795d3909718cdd5abd49572e84fe55590eef31a88a08fdffd(4)大小写字母混合aBcDeFgHi消息长度:9摘要值:5ba4d59ca7520b5f8a6eb48be70f9c6e8d0f3490d859ea86aa0d8fe5578b6(5)汉字无敌超人消息长度:8(一个汉字2字节)摘要值:bb85a565a7957e8ac468bfd91c57a344a508b297158b13fd9527aba6d3688c8(6)其他字符!#¥%&*()(*&%¥&*()、;【】、。,?:消息长度:75摘要值:2ecdbdeca6b6b15e7da954a7b68994c44e44b88b4f9639835fea3b2b64ad62文件测试(1)文本文件文件内容:a摘要值:ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb(2)文本文件文件内容:无敌超人摘要值:bb85a565a7957e8ac468bfd91c57a344a508b297158b13fd9527aba6d3688c8(3)word文档文件内容:a摘要值:ad706c96796b7bb53082168be0de685ffb4fbe385cc1b9da28add969d39c17(4)其他文件测试了音频文件,.C文件,.h文件,均能得出摘要值。经过检测:1,本软件能进行正常的消息摘要,通过对比书上的摘要值,本软件摘要结果没有错误。2,对于长度不足的分组,可以通过填充来按照格式补满。3,对于错误的输入,能用弹出窗口的方式加以提示。4,对于不存在的文件摘要能提示。5,没有发现导致致命错误的操作方法。5参考资料1 王晓京 应用密码学 电子工业出版社20062 吴金平 从零开始Visual C+ 基础培新教程 人民邮电出版社 20023 温秀梅 Vis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论