毕业设计(论文)-浅析MD5算法的原理及应用.doc_第1页
毕业设计(论文)-浅析MD5算法的原理及应用.doc_第2页
毕业设计(论文)-浅析MD5算法的原理及应用.doc_第3页
毕业设计(论文)-浅析MD5算法的原理及应用.doc_第4页
毕业设计(论文)-浅析MD5算法的原理及应用.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

浅析浅析 MD5MD5 算法的原理及应用算法的原理及应用 摘摘 要要 随着网络技术的广泛应用,网络信息安全越来越引起人们的重视。针对数 据在存储的时候存在大量的安全问题,目前通常将需要存储的数据进行加密然 后再存储,应用 MD5 算法是一个不错的选择。MD5 算法的全称是 Message- Digest algorithm 5,是一种用于产生数字签名的单项散列算法。它的作用是 让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式, 即将一个任意长度的“字节串”通过一个不可逆的字符串变换算法变换成一个 128bit 的串。 该毕业设计是运用 microsoft visual c+ 6.0 软件而开发的,主要是通过 算法实现数据的加密存储。文章分成五部分。第一,二部分描述了 MD5 的目前 现状和相关理论知识,也让我们了解 MD5 的定义。重点是 MD5 的流程实现和封 装 DLL。在 MD5 算法的 DLL 封装这章,主要是描述我们为什么要选用封装 DLL 的原因,以及封装的好处。设计流程这一部分里包含读取,修改,插入,删除 这几个功能的实现情况,并用流程图的方式来分别描述了这四大功能模块的实 现过程。最后一部分显示了系统测试的内容和系统主要功能运行界面图。 关键词:关键词:信息安全;MD5;加密;封装 The Research and Implementation for MD5 Algorithm - Data Storage and Encryption Abstract With the wide application of the network technology, the information of the network safety causes peoples attention more and more. A large number of security questions appear while storing data, the data that usually store needing at present are encrypted then stored, it is a good choice to use MD5 algorithm. The full name of MD5 algorithm is Message-Digest algorithm 5, is that a kind of individual event used for producing figures and signed breaks up and arranges algorithms. Its function is to let large capacity information compress and become a kind of secret form before signing the private key with the digital signature software, vary byte bunch of a wanton length into a great integer of one 128bit through an irreversible one bunch of algorithms of varying of character . Used Microsoft Visual C+ 6.0 software and developed in this graduation project, is mainly to realize through the algorithm that the encryption of the data is stored. The article is divided into five parts. The first and second parts are describing the current situation and relevant theory knowledge at present of MD5, let us understand the definition of MD5. The focal point is the procedure of MD5 is realized and encapsulation to Dynamic Link Library. In this chapter of encapsulation MD5 class library to Dynamic Link Library, mainly describe why we will select encapsulation Dynamic Link Library for use , and the advantage of encapsulation . Design this of procedure and include reading in the part , revise , insert, delete the realization situations of these functions, and has described the realization course of this four major functions module respectively in way of the flow chart . The last part has shown that the content of system testing and main function of system operate the interface picture . Key words: information security; MD5; encrypt; Packaging 591 论文网 www.591LW.com 目目 录录 论文总页数:23 页 1引言.1 1.1研究现状.1 1.2选题意义.2 1.3选题背景.2 2相关理论基础.3 2.1单向散列函数.3 2.1.1单向散列函数的基本原理 .3 2.1.2散列值的长度 .4 2.2MD5 算法的基本原理 .4 2.3MD5 的应用 .12 3需求分析及设计方案.14 3.1主要功能模块.14 3.1.1数据加密 .14 3.1.2数据存储 .14 3.1.3数据库设计 .14 3.2主要流程图.15 4MD5 算法的 DLL 封装 .15 4.1加载时动态链接.16 4.2运行时动态链接.16 4.3DLL 封装情况 .16 5具体设计流程及实现.17 5.1读取的设计和实现.17 5.2插入的设计和实现.18 5.3修改的设计和实现.18 5.4删除的设计和实现.19 6调试与分析.19 6.1概述.19 6.2测试分析报告.20 结 论.20 参考文献.21 第 1 页 共 23 页 1 1 引言引言 随着网络通信技术和 Internet 的联系日益增强,出现了一系列与网络安全 相关的问题:如对主机的攻击,网络上传输的信息被截取、篡改、重发等,由 此,它对网络应用的进一步推广构成了巨大威胁,因此密码体制1就在这种背 景下应运而生了。存储加密涉及大量文件、资料、新建等文档处理,需要高效, 可靠的进行各种信息交换,同时对信息流转的整个过程需要有效的组织和监控。 对数据的安全存储和安全传输具有较高的要求。数据加密技术不仅具有保证信 息机密性的信息加密功能,而且具有数字签名、秘密分存、系统安全等性能。 因而可以保障信息的机密性、完整性和准确性,防止信息被篡改、伪造和假冒 2。虽然目前已有很多加密技术应用于各个领域,但是存在加密强度、运算量 大等缺陷,因而本文提出了一种新的加密机制MD5加密。 同时,在竞争日趋激烈的今天,只有实行对数据加密的加强管理,建设性提 高信息安全在网络中的地位,以至在竞争中求生存,以期更好地发展下去。 1.11.1研究现状研究现状 MD5 的全称3是 Message-Digest algorithm 5(信息-摘要算法),MD5 是 一种不可逆的算法,即对生成的密文求逆,对应着无穷多个逆。在 90 年代初由 MIT Laboratory for Computer Science(IT 计算机科学实验室)和 RSA Data Security Inc(RSA 数据安全公司)的 Ronald L.Rivest 开发出来,经 MD2,MD3 和 MD4 发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前 被“压缩”成一种保密的格式(把一个任意长度的字节串变换成一定长的大整数)。 不管是 MD2,MD4 还是 MD5,它们都需要获得一个随机长度的信息,并产生一个 128 位的信息摘要。虽然这些算法的结构或多或少有些相似,但是 MD2 的设计 与 MD4 和 MD5 完全不同,是因为 MD2 是为 8 位机器做过设计优化的,而 MD4 和 MD5 却是面向 32 位的电脑。Rivest 在 1989 年开发出 MD2 算法,在这个算法中, 首先对信息进行数据补位,使信息的字节长度是 16 的倍数,然后,以一个 16 位的检验和追加到信息末尾,并且根据这个新产生的信息计算出散列值。后来, Rogier 和 Chauvaud 发现,如果忽略了检验和,那样就将产生 MD2 冲突。MD2 算 法的加密后结果是唯一的-即没有重复。 为了加强算法的安全性,Rivest 在 1990 年又开发出 MD4 算法。MD4 算法同 样需要填补信息以确保信息的字节长度加上 448 后能被 512 整除(信息字节长度 mod 512=448。然后,一个以 64 位二进制表示的信息的最初长度被添加进来。 信息被处理成 512 位迭代结构的区块,而且每个区块要通过三个不同步骤的处 理。Den Boer 和 Bosselaers 以及其他人很快的发现了攻击 MD4 版本中第一步 和第三步的漏洞。Dobbertin 向大家演示了如何利用一部普通的个人电脑在几 第 2 页 共 23 页 分钟内找到 MD4 完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不 同的内容进行加密却可能得到相同的加密后结果),毫无疑问,MD4 就此被淘汰 掉了。 一年以后,即 1991 年,Rivest 开发出技术上更为趋近成熟的 MD5 算法。 它在 MD4 的基础上增加了“安全-带子”(safety-belts)的概念。虽然 MD5 比 MD4 稍微慢一些,但却更为安全。这个算法很明显的由四个和 MD4 设计有少许 不同的步骤组成。在 MD5 算法中,信息-摘要的大小和填充的必要条件与 MD4 完全相同。Den Boer 和 Bosselaers 曾发现 MD5 算法中的假冲突(pseudo- collisions),但除此之外就没有其他被发现的加密后结果了。Van Oorschot 和 Wiener 曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索 MD5 冲突的机器可以平均每 24 天就找到一个冲突,但单从 1991 年到 2001 年这 10 年间,竟没有出现替代 MD5 算法的新算法,我们可以看出这个瑕疵并没有太多的影响 MD5 的安全性。 而所有这些都不足以成为 MD5 在实际应用中的问题,并且由于 MD5 算法的使用 不需要支付任何版权费用,所以在一般的情况下,MD5 可以算是比较安全的了。 1.21.2选题意义选题意义 随着网络技术的广泛应用,网络信息安全越来越引起人们的重视。最初的 计算机应用程序通常没有或很少有安全性,那是因为当时的系统是专属和封闭 的,简单地说,计算机之间虽然也交换数据和信息,但形成的网络完全在组织 控制之下。在那个时候,计算机之间通信的协议也是不公开的,因此,别人很 难访问交换的信息。同时,因为当时信息安全并不是个重要问题,所以导致了 很多人都忽略了数据的安全性,直到后来人们真正的认识和了解到数据的重要 性。而选该毕业设计,主要是针对数据在存储的时候存在大量的安全问题,并 且在现有 MD5 加密算法基础上,提出了一种数据存储加密策略。同时,针对 md5 算法而进行进一步的了解和研究。 1.31.3选题背景选题背景 现阶段,信息安全性已成为全社会共同关心问题,密码学研究也越来越被 人们所关注。密码学主要研究的是通讯保密。近年来,密码学研究之所以十分 活跃,主要原因是它与计算机科学的蓬勃发展息息相关。由于公共和私人部门 的一些机构越来越多的应用电子数据处理,将数据存储在数据库中,因此防止 非法泄露,删除,修改等是必须重视的问题。对数据进行加密能够防止他人盗 取需要保密的信息,但这只是解决了一方面的问题,至于如何防止他人对重要 数据进行破坏,如何确定交易者的身份,以及如何防止日后发生纠纷时交易者 第 3 页 共 23 页 抵赖,还需要采取其它的手段,这一手段就是数字签名。数字签名技术实际上 是在数据加密技术基础上的一种延伸应用。数字签名经常和单向散列(Hash)函 数一起使用,而单向散列(Hash)函数是现代密码学的核心。最常见的散列算法 有 MD5,SHA 和 Snefru,MD5 是当今非常流行的优秀的典型 Hash 加密技术。 本毕业设计主要是对 MD5 算法进行研究,并在此基础上编程实现 MD5 算法 函数,并实现封装;开发一个简单的数据存储程序验证算法的正确性和可用性。 2 2 相关理论基础相关理论基础 2.12.1单向散列函数单向散列函数 单向散列函数4也称 Hash(哈希)函数。它是现代密码学的核心。散列函数 一直在计算机科学中使用,散列函数就是把可变的输入长度串转换成固定长度 输出值(叫做散列值)的一种函数。而单向散列函数是在一个方向上工作的散列 函数,从预映射的值很容易计算出它的散列值,但要使它的散列值等于一个特 殊值却很难。 散列函数是公开的,对处理过程并不保密,单向散列函数的安全性是它的 单向性,其输出不依赖于输入。平均而言,预映射值的单个位的改变,将引起 散列值中一半位的改变。已知一个散列值,要找到预映射的值,使它的值等于 已知的散列值在计算上是不可行的,可把单向散列函数看作是构成指纹文件的 一种方法。如果你验证某人持有一个特定的文件(你同时也持有该文件),但你 不想他将文件传给你,那么,就要通知他将该文件的散列值传给你,如果他传 送的散列值是正确的,那么可以肯定他持有那份文件。 .1 单向散列函数的基本原理单向散列函数的基本原理 单向散列函数 H(M)是对一个任意长度的消息 M 进行运算。返回一个固定 长度的值 h。 h=H(M) 其中 h 的长度为 m。 输入为任意长度且输出为固定长度的函数有很多种,但意向散列函数具有 使其单向的如下特性: 1)给定值 M,可以很方便地计算出 h 值。 2)给定 h,根据 H (M) =h 计算 M 很难。 3)给定 M,要找到另一则消息 M并使得 H(m)=H(m)很难。 第 4 页 共 23 页 也就是说,如果某个入侵者想要获得一则消息,他必须破坏掉每个运用单 向函数的协议的安全性,因为单向性函数的关键在于产生 M 的一个唯一的消息 摘要。 事实上,单向散列函数是建立在压缩函数的思想基础之上的。单向散列函 数的输出值为一个长度为 n 的散列值,该长度比输入值的长度 m 要小很多,即 nm。进行该函数运算的前提条件是我们应根据一定规则将消息分成若干个消息 片段,散列函数的输入值是一个消息片段和前一个消息片段的输出值,而其输 出值则是该消息片段前所有消息片段的散列值。这也就是说,消息片段 M 的散 列值的计算方法可表示为: 该过程可图示如下: Mi hi Hi-1 图 1 同时该散列值又将作为下一步运算的输入值之一,由此推算可知,整个消 息的散列值 n 即为最后一个消息片段经计算所得的散列值。这样,我们最终得 到的将是一个固定长度的函数值。 .2 散列值的长度散列值的长度 我们都知道,散列值越长则安全性越好,MD5 算法就是单向散列函数产生 128 位的散列值,以此保证了它的安全性,以下即为生成一个长散列值的方法: 1)运用单向散列函数生成一则消息的散列值。 2)将该散列值附于消息之后。 3)产生包含散列值和消息在内的一连串的数值的散列值。 4)将第一步产生的散列值与第三步产生的散列值组合起来生成一个更大的 散列值。 5)重复 1)至 3)步若干次。 2.22.2MD5MD5 算法的基本原理算法的基本原理 MD5 算法以 512 位分组来处理输入文本,每一分组又划分为 16 个 32 位子 分组。算法的输出由 4 个 32 位分组组成,将它们级联形成一个 128 位散列值5。 单向散列 函数 第 5 页 共 23 页 第 1 步::填充 MD5 的第 1 步是在原消息中增加填充位,目的是使原消息长度等于一个值, 即比 512 的倍数少 64 位。例如,如果原消息长度为 1000 位,则要填充 472 位, 使消息长度为 1472 位,因为 64+1472=1536,是 512 的倍数(1536=512*3)。 这样,填充后,原消息的长度为 448 位(比 512 少 64),960 位(比 1024 少 64 位),1472 位(比 1536 少 64 位),等等。 图 2 填充过程 填充对用一个 1 位和多个 0 位进行填充。如果消息长度已经是 448,则要 填充 512 位,使长度变成 960 位。因此,填充长度为 1512 的值。图 2 显示了 填充过程。 第 2 步:添加长度 增加填充位后,下一步要计算机消息原长,将其加进填充后的消息末尾。 先计算消息长度,不包括填充位(即增加填充位前的长度)。例如,如果原消息 为 1000 位,则填充 472 位,使其变成比 512 的倍数(1536)少 64 位,但长度为 1000,而不是 1472。 这个消息原长表示为 64 位值,添加到加进填充后的消息末尾,如图 3 所示。 如果消息长度超过 264位(即 64 位无法表示,因为消息太长),则只用长度的低 64 位,即等于计算 length mod 264。 我们看到,这时消息长度为 512 的倍数,成为要散列的消息。 第 6 页 共 23 页 图 3 添加长度 第 3 步:将输入分成 512 位的块 下面要将输入分成 512 位的块,如图 4 所示。 图 4 将输入分成 512 块 第 4 步:初始化链接变量 第 4 步要初始化四个链接变量,分别称为 A,B,C,D,它们都是 32 位的 数字,这些链接变量的初始十六进制值如表 1 所示,低的字节在前面。 第 7 页 共 23 页 表 1 链接变量 注意低位的字节在前面指的是 Little Bndian 平台上内存中字节的排列方 式,而在程序中书写时,要写成: A=0 x01234567 B=Ox89abcdef C=Oxfedcba98 D=0 x76543210 第 5 步:处理块 初始化之后,就要开始实际算法了。这是个循环,对消息中的多个 512 位 块运行。 5.1 步:将四个链接变量复制到四个变量 a,b,c,d 中,使 a=A,b=B,c=C,d=D,如图 5 所示, 图 5 将四个链接变量复制到四个变量中 实际上,这个算法将 a,b,c,d 组合成 128 位寄存器(abcd),寄存器 (abcd)在实际算法运算中保存中间结果和最终结果,如图 6 所示。 图 6 链接变量抽象视图 第 8 页 共 23 页 5.2 步:将当前 512 位块分解为 16 个子块,每个子块为 32 位,如图 7 所 示。 图 7 将当前 512 块分解为 16 个子块 5.3 步:主循环有四轮,每轮很相似。每一轮的操作,都要处理一个块中 的 16 个子块。每一轮的输入如下:(a) 16 个子块;(b)变量 a,b,c,d;(c) 常量 t,如图 8 所示。 图 8 每一轮处理 这四轮中的第 1 步进行不同处理,其他步骤是相同的。 -每一轮有 16 个输入子块 M0,M1,M15,或表示为 Mi,其 中 i 为 115。我们知道,每个子块为 32 位。 -t 是个常量数组,包含 64 个元素,每个元素为 32 位。我们把数组 t 的 元素表示为 t1,t2,t64,或 ti,其中 i 为 164。由于有四轮, 因此每一轮用 64 个 t 值中的 16 个。 下面总结这四轮的迭代。每一轮输出的中间和最终结果复制到寄存器 abcd 中,注意,每一轮有 16 个寄存器。 1)首先对 b, c, d 作一次非线性函数运算,这个运算在四轮中不同。 2)变量 a 加进第 1 步的输出(即寄存器 abcd)。 第 9 页 共 23 页 3)消息子块 Mi加进第 2 步的输出(即寄存器 abcd)。 4)常量 ti加进第 3 步输出(即寄存器 abcd)。 5)第 4 步的输出(即寄存器 abcd)循环左移 s 位。 6)变量 b 加进第 5 步输出(即寄存器 abcd)。 7)第 6 步的输出成为下一步的新 abcd。 图 9 和图 10 显示了 MD5 操作过程。 图 9 MD5 主循环 图 10 MD5 的一个执行过程 以下是每次操作中用到的四个线性函数(每轮一个),简单的说,就是布尔 运算。 F(x,y,z) = (x virtual MD5_CTX(); void MD5Update ( unsigned char *input, unsigned int inputLen); void MD5Final (unsigned char digest16); private: unsigned long int state4; 第 17 页 共 23 页 unsigned long int count2; unsigned char buffer64; unsigned char PADDING64; private: void MD5Init (); void MD5Transform (unsigned long int state4, unsigned char block64); void MD5_memcpy (unsigned char* output, unsigned char* input,unsigned int len); void Encode (unsigned char *output, unsigned long int *input,unsigned int len); void Decode (unsigned long int *output, unsigned char *input, unsigned int len); void MD5_memset (unsigned char* output,int value,unsigned int len); ; #endif 下面为部分调用代码6: MD5_CTX md5T; unsigned char digest16; md5T.MD5Update (unsigned char*)pBuf,iTotal); md5T.MD5Final(digest); 5 5具体设计流程及实现具体设计流程及实现 5.15.1读取的设计和实现读取的设计和实现 主要是在界面里显示数据库7的内容,并把密码加密8,显示加密后的密 码。主要流程如下: 第 18 页 共 23 页 开始 结束 读取 连接数据库 显示用户名和加密 后的密码 图12 读取功能的实现流程图 5.25.2插入的设计和实现插入的设计和实现 5.35.3修改的设计和实现修改的设计和实现 5.45.4删除的设计和实现删除的设计和实现 需要先读取数据,然后才能进行删除,数据被删除后,界面里不再显示,数 据库里也不再显示,在界面和数据库中只会显示还未被删除的数据。 图

温馨提示

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

评论

0/150

提交评论