计算机光盘软件与应用 2012年第3期 Computer CD Software and Applications 软件设计开发 关于对哈希算法的研究与应用 黄云轲,辛小龙,李成龙,李聿民 (西北大学数学系,西安 710069) 摘 要:随着科学技术的不断发展,许多新的算法在各个领域中有了进一步的应用,其中技术较为先进的哈希算法,要:以其独特的计算方式受到了广泛的应用。本文主要从哈希算法的定义、特点、原理、应用等方面展开了深入的研究,供大家讨论研究。 关键词:哈希算法;含义;原理;方式;应用 关键词:中图分类号:TP301.6 文献标识码:A 中图分类号:文献标识码: 文章编号:1007-9599(2012)03-0201-02 文章编号: The Research and Application of the Hash Algorithm Huang Yunke,Xin Xiaolong,Li Chenglong,Li Yumin (Department of Mathematics, Northwest University, Xi'an 710069,China) Abstract:With the continuous development of science and technology, many new algorithms have further applications in various fields in which technology is more advanced hash algorithm, with its unique method of calculation has been widely used. Mainly from the hash algorithm definition, characteristics, principles and applications, in-depth study for discussion study. Keywords:Hash algorithm; Meaning; Principle; Way; Application 一、哈希算法的含义 (一)MD4算法 哈希的英文名为Hash,意思为散列,它将任意长度的二进制MD4算法是哈希算法中较为成熟的算法之一,它是由现任麻值对应为固定长度的二进制值,这个值就是我们所要说的哈希值。省理工学院(MIT)电子和计算机科学系Viterbi 讲座教授哈希值的输出空间一般要比输入空间小很多,不一样的输入也会Ronald L. Rivest在上个世纪九十年代出创造出来的一种哈希算哈希成相同的输出。在哈希一段明文中,如果改变明文中的内容,法方式。MD是指消息摘要的意思,是Message Digest 的缩写。会导致散列产生不一样的结果,如果要想找到哈希为同一个数值它一般使用在32位的计算机处理器模块内,通过软件系统来实现的不同的输入内容,是无法通过各种算法来实现的,因此我们可其算法功能。MD4算法在计算过程中需要及时填补有关Message 以利用散列值的这一特点来检验数据的完整性。哈希算法就是将Digest来保证Message Digest的bit位长度加上448后能够被哈希值的输出,它是用来形成某些数据消息或会话内容片段的散512进行整除,之后,通过64位的二进制Message Digest被填列值的计算方法。较为先进合理的哈希算法,可以通过对散列输补进来,将信息制定为512bit,并且每个部分都需要通过以上方入数据进行修改时,可以更改结果散列值中的所有位,所以散列式进行处理。由于MD4本身存在安全性的问题,当时推出后,就对于数据的检测有很好的作用。哈希算法的方式很多,现在普遍曾被某些人进行了破译,对MD4中的第一步和第三步中存在的问在采用的方法有以下几种,分别为:MD2、MD4、MD5 和安全哈希题进行了攻击,例如,曾经Dobbertin向公众演示,他通过一算法(SHA-1)。 台计算机在几分钟内就找到了MD4中存在的漏洞,使通过哈希表也叫做散列表,它根据已经设定好的哈希算法和处理MD4加密的不同内容,得到了相同的加密结论。但是就整个数据问题的计算方式,将关键码值映射到一个有限的位置空间中,MD4算法来说并没有完全的被破译,在此之后Ronald L. Rivest并关键码值的空间位置中的象,作为存储点,这种存放记录的数对MD4中存在的漏洞进行了修补与改进。然而,由于MD4本身存组形成的表叫做哈希表。这种对应的映射函数叫做哈希函数。在在的安全性漏洞,还是被更为先进安全的算法所淘汰。但MD4算算法中所得到的存放空间就是哈希地址,也叫做散列地址。 法为之后的MD5算法、sha-1算法、RIPEMD算法等提供了很好的二、哈希算法的原理 理论基础。 哈希算法的原理是根据数据帧的散列值服务器数计算出余(二)MD5算法 数,通过这种方法来确定目前数据帧中的内容将会发向哪一个散MD5算法是MD4算法的升级版,也是由Ronald L. Rivest开列值服务器。实际上也可以说就是集合之间所产生的彼此对应的发研制出的一种哈希算法方式。它与MD4算法相比安全性有了很关系,相当于在一个集合内的一个数据帧映射到另一个集合内所大的提升,它在MD4的基础上增加了safety-belts功能,使整对应的那个数据帧的过程。在这个过程中也会涉及到一个哈希算个算法变得更加可靠。MD5的输入方式与MD4相同,还是保持法的分布问题。哈希表的工作原理就是把一个数据帧按照某一种了原理的512bit的分组形式,它的输出方式是通过四个32bit设定好的算法,比如说散列算法,将其转换为数字的形式,将这的连接形式。MD5在MD4的基础上加入了第四轮的计算模式,每些数字对数组长度进行余数计算,取其余数,将结果作为该数组一个步骤都是一一对应的固定值,改进了MD4中在第二轮、第三的下一个标记,将数值进行存储,并将其存储在这个数字下标下轮计算中的漏洞,完善了访问输入分组的次序,从而减小其对称的数组空间内。如果发出有关哈希表的查询命令后,就可以使用性和相同性。通过这些变化,使得MD5与MD4相比变得复杂很多,散列函数将数据帧转换成其标记下对应的数组,从而从该空间内整个运转速度也要比MD4慢一些,但是从整体安全性、抗冲突和取得相应的散列值。散列表根据输入数值的变化而不断发生变化。抗分析方面有了很大的提高。 因此,我们可以充分利用哈希算法中的数组定位功能来确定相应(三)SHA1算法 的数据位置。由于哈希算法的这一功能,可以快速的完成查找任SHA1算法是由美国国家标准与技术研究院美国国家安全局务,这要同线性数据结构与表格、队列等计算方法相比速度已经设计出来的,主要是通过与DSA算法配合在一起使用。SHA1算法有了很大的提升。 也叫做安全哈希算法,主要应用于Digital Signature Standard 三、哈希算法的方式 (下转第199页) — — 201 计算机光盘软件与应用 2012年第3期 Computer CD Software and Applications 软件设计开发 直行格——每根箭头的起点位置即是对应颜色方的直行格。每步行动落到这一点,就能直行到箭头所指的格子。 终点前通道 —— 终点前的六格即是对应颜色方的终点通道,这里不会产生“跳跃”。 (二)骰子。飞行棋里有一个骰子,骰子是正方体的,有六个面分别是一个点、二个点、三个点、四个点、五个点和六个点。用来决定玩家走几步,正面是几就走几步,每次掷到6可以出动一个棋子,并且可以再次掷骰子,直至不是六为止。 (三)四方棋子。有四方棋子组成,分别四种颜色,每一方分别有四个棋子。 四、游戏的框架结构设计及流程 (一)游戏的框架结构。游戏的框架结构主要由玩家,鼠标,对战地图和游戏控制组成。玩家通过鼠标控制游戏中对战地图的操作对象——骰子和棋子,骰子和棋子遵循游戏规则,游戏规则决定棋子走的方向和步数,最后棋子所发生的变化映射到对战地图上。 (二)创建对战地图。在创建对战地图时,主要考虑点:幸运轮盘位置、地雷位置、时空隧道位置、暂停位置;关卡在对战地图上的对应的显示图形;玩家棋子骰子在对战地图上的显示图形。 (三)游戏类(Game)。游戏类(Game)功能:1.实现游戏初始化设置;2.展示游戏开始界面以及角色设置;3.控制游戏进度、实现游戏规则。 在游戏正式开始以前必须要清理掉没用的和错误的数据,为后面的正常运行准备一个“干净”的环境,这样程序的正确运行也为调试带来方便,所以首先要进行初始化。设计游戏类的关键:两个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次飞行棋游戏类实现流程图如图1所示。 五、游戏的实现 启动游戏后,跳出游戏选择界面,有四个角色可供选择,分别是戴高乐、艾森豪威尔、麦克阿萨、巴顿。分别双方分别选择自己的角色开始对决。 六、总结 通过编写这个程序,我体会最为深刻的一点是系统架构和设计模式的重要性。即使是对于一个并不大的程序,代码的组织都是非常重要的,因为这关系到日后的维护以及扩展。这个游戏之中,可以直接获得一个完整的飞行棋人机对弈算法的源代码级模块。但是对于系统的架构,却完全是自己的事情,几千上万行的代码需要通过合适的方法组织起来,从而使编写代码更加有条理,更加符合标准,这才是最重要的。 (上接第201页) DSS里面定义的数字签名算法。SHA1算法长度一般为160bit的Message Digest,SHA1在接收消息摘要的过程中,可以利用Message Digest来检查数据的完整情况。它不会从Message Digest中还原相关的内容,此外两个不同的Message Digest不会产生相同的Message Digest,因此SHA1具有很强的brute-force性能。SHA1的计算方式是基于MD4的算法原理,它的填补和分组模式与MD5是一样的,但是在算法中,SHA1的非线性函数、循环左移运算和加法常数与MD5的运算方式有一定的差异,SHA1的安全性和稳定性比MD5算法更加可靠,且运算速度也有了一定的提高。 四、哈希算法的应用 (一)数字签名方面的应用 哈希算法是现阶段较为先进的加密算法之一,在数字签名方面经常会应用到这一技术。在数字签名过程中,首先要确定出双方认同的哈希算法和签名的方式,签名的一方先要计算出数据文件的哈希值,然后利用哈希值进行非对称算法,得到数字签名。对方在检查签名的过程中,对这条数据信息进行哈希计算,对签字方的哈希值进行比对,比对的方法也是利用非对称算法进行验证。 (二)校对信息方面的应用 开始 初始化幸运轮盘位置、地雷位置、时空隧道位置、暂停位置 设置地图关卡对应图形getGreph() 分别输出地图奇数行、偶数行、左竖行、右竖行 图1 流程图 在刚开始编写这个程序的时候,我幼稚地认为其中最重要的是博弈树算法。但是头一个月编写程序的时候却发现程序越写越不容易维护,可见是我走错了方向。后来我向老师讨教,他告诉我:我们的先人早已为我们准备好了各种精良可用的现成算法,我们所要做的就是直接“拿来主义”罢了;但是对于代码的组织(也就是软件的架构)才是真正软件工业的核心部分,因为软件事实上是直接和经济挂钩的,因此我们必须在编写代码之前选择一种最为合适的方法来组织这些代码,否则我们将会失去更多的时间和金钱。 于是,我将以前写的代码全部删除,认真地思考了三天的时间。我开始发现其实飞行棋的设计并不是纯数学——正相反,数学只占了很小的一部分。它其实是一种哲学,一种有着数学美感的哲学。 参考文献: [1][美]罗林斯.[美]莫里斯著,付煜等译.游戏架构与设计[M].红旗出版社.2005. [2][美]Clayton Walnum著王国春,施妍然译.游戏编程 21天自学通[M].清华大学出版社,2001 [3]姜波.Visual Basic 6.0.NET游戏开发实例[M].机械工业出版社,2005 [作者简介]谢云燕(1988-),女,哈尔滨师范大学计算机科学与信息工程学院,本科生,研究方向为计算机教育。 在对文件信息校对的过程中使用最多、最为普遍的算法就是哈希算法,其中以MD5算法最为常见。因为MD5算法在信息校对中具有奇偶校验法和循环冗余码校验无法比拟的优势,即具有防止对数据进行篡改的能力,有效的阻止了黑客或其他人员对相关数据文件内容进行恶意的修改和破坏,保证了数据的正确性。 五、结语 总之,哈希算法是目前较为先进的加密算法,它以其单向性、抗冲突性、映射分布均匀性和差分分布均匀性等特点,广泛应用于工业、商业等各个领域之中,但是由于其内部结构还存在很大的发展性,有待于相关技术人员对其进行更深一步的拓展,使其发挥出更好的作用。 参考文献: [1]王勇平.《哈希算法的研究与发展》.北京.创新出版社,2003(1) [2]李洪山.《浅谈MD5算法的探究与开发》.电子技术书刊,2004(01) [3]刘温筠.《关于对SHA1算法的分析与研究》.河北文化出版社,2002(11) [4]孙清泉,徐卫国,康健.《关于对哈希表的理解与探讨》.现代教育出版社,2008,1 结束 — — 199