什么是HASH函数(经典例子)

什么是HASH函数(经典例⼦)
让我们先来了解⼀些基本知识,作作预热只有这样才能更好的了解hash。
林兆华Hash, ⼀般翻译做"散列",也有直接⾳译为"哈希"的,就是把任意长度的输⼊(⼜叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是⼀种压缩映射,也就是,散列值的空间通常远⼩于输⼊的空间,不 同的输⼊可能会散列成相同的输出,⽽不可能从散列值来唯⼀的确定输⼊值。
简单的说就是⼀种将任意长度的消息压缩到某⼀固定长度的消息摘要的函数。
HASH主要⽤于信息安全领域中加密算法,他把⼀些不同长度的信息转化成杂乱的128位的编码⾥,叫做HASH值. 也可以说,hash就是到⼀种数据内容和数据存放地址之间的映射关系
了解了hash基本定义,就不能不提到⼀些著名的hash算法,MD5 和 SHA1 可以说是⽬前应⽤最⼴泛的Hash算法,⽽它们都是以 MD4为基础设计的。那么他们都是什么意思呢?
这⾥简单说⼀下:
1) MD4
MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。它适⽤在32位字长的处理器上⽤⾼速软件实现--它是基于 32 位操作数的位操作来实现的。
2) MD5
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输⼊仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。
MD5⽐MD4来得复杂,并且速度较之要慢⼀点,但更安全,在抗分析和抗差分⽅⾯表现更好
3) SHA1 及其他
SHA1是由NIST NSA设计为同DSA⼀起使⽤的,它对长度⼩于264的输⼊,产⽣长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。
那么这些Hash算法到底有什么⽤呢?
Hash算法在信息安全⽅⾯的应⽤主要体现在以下的3个⽅⾯:
1) ⽂件校验
我们⽐较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能⼒,它们⼀定程度上能检测并纠正数据传输中的信道误码,但却不能防⽌对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为⽬前应⽤最⼴泛的⼀种⽂件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
2) 数字签名
Hash 算法也是现代密码体系中的⼀个重要组成部分。由于⾮对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了⼀个重要的⾓⾊。 对 Hash 值,⼜称"数字摘要"进⾏数字签名,在统计上可以认为与对⽂件本⾝进⾏数字签名是等效的。⽽且这样的协议还有其他的优点。
3) 鉴权协议
如下的鉴权协议⼜被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是⼀种简单⽽安全的⽅法。
央行副行长回答提问
以上就是⼀些关于hash以及其相关的⼀些基本预备知识。那么在emule⾥⾯他具体起到什么作⽤呢?
什么是⽂件的hash值呢?
⼤ 家都知道emule是基于P2P (Peer-to-peer的缩写,指的是点对点的意思的软件), 它采⽤了"多源⽂件传输协议"(MFTP,the Multisource FileTransfer Protocol)。在协议中,定义了⼀系列传输、压缩和打包还有积分的标准,emule 对于每个⽂件都有md5-hash 的算法设置,这使得该⽂件独⼀⽆⼆,并且在整个⽹络上都可以追踪得到。
MD5-Hash-⽂件的数字⽂ 摘通过Hash函数计算得到。不管⽂件长度如何,它的Hash函数计算结果是⼀个固定长度的数字。与加密算法不同,这⼀个Hash算法是⼀个不可逆的单向 函数。采⽤安全性⾼的Hash算法,如MD5、SHA时,两个不同的⽂件⼏乎不可能得到相同的Hash结果。因此,⼀旦⽂件被修改,就可检测出来。
人身保险论文
当 我们的⽂件放到emule⾥⾯进⾏共享发布的时候,emule会根据hash算法⾃动⽣成这个⽂件的hash值,他就是这个⽂件唯⼀的⾝份标志,它包含了 这个⽂件的基本信息,然后把它提交到所连接的服务器。当有他⼈想对这个⽂件提出下载请求的时候, 这个hash值可以让他⼈知道他正在下载的⽂件是不是就是他所想要的。尤其是在⽂件的其他属性被更改之后(如名称等)这个值就更显得重要。⽽且服务器还提
供了,这个⽂件当前所在的⽤户的地址,端⼝等信息,这样emule就知道到哪⾥去下载了.
⼀般来讲我们要搜索⼀个⽂件,emule在得到了这个信息后,会向被添加的服务器发出请求,要求得
到有相同hash值的⽂件。⽽服务器则返回持有这个⽂件的⽤户信息。这样我们的客户端就可以直接的和拥有那个⽂件的⽤户沟通,看看是不是可以从他那⾥下载所需的⽂件。
三个扬州对于emule中⽂件的hash值是固定的,也是唯⼀的,它就相当于这个⽂件的信息摘要,⽆论这个⽂件在谁的机器上,他的hash值都是不变的,⽆论过了多长时间,这个值始终如⼀,当我们在进⾏⽂件的下载上传过程中,emule都是通过这个值来确定⽂件。
李嘉图
那么什么是userhash呢?
道 理同上,当我们在第⼀次使⽤emule的时候,emule会⾃动⽣成⼀个值,这个值也是唯⼀的,它是我们在emule世界⾥⾯的标志,只要你不卸载,不删 除config,你的userhash值也就永远不变,积分制度就是通过这个值在起作⽤,emule⾥⾯的积分保存,⾝份识别,都是使⽤这个值,⽽和你的 id和你的⽤户名⽆关,你随便怎么改这些东西,你的userhash值都是不变的,这也充分保证了公平性。其实他也是⼀个信息摘要,只不过保存的不是⽂件 信息,⽽是我们每个⼈的信息。
那么什么是hash⽂件呢?
我们经常在emule⽇⾄⾥⾯看到,emule正在hash⽂ 件,这⾥就是利⽤了hash算法的⽂件校验性这个功能了,⽂章前⾯已经说了⼀些这些功能,其实这部分是⼀个⾮常复杂的过程,⽬前在ftp,bt等软件⾥
乳化硅油
⾯ 都是⽤的这个基本原理,emule⾥⾯是采⽤⽂件分块传输,这样传输的每⼀块都要进⾏对⽐校验,如果错误则要进⾏重新下载,这期间这些相关信息写⼊met ⽂件,直到整个任务完成,这个时候part⽂件进⾏重新命名,然后使⽤move命令,把它传送到incoming⽂件⾥⾯,然后met⽂件⾃动删除,所以 我们有的时候会遇到hash⽂件失败,就是指的是met⾥⾯的信息出了错误不能够和part⽂件匹配,另外有的时候开机也要疯狂hash,有两种情况⼀种 是你在第⼀次使⽤,这个时候要hash提取所有⽂件信息,还有⼀种情况就是上⼀次你⾮法关机,那么这个时候就是要进⾏排错校验了。
关 于hash的算法研究,⼀直是信息科学⾥⾯的⼀个前沿,尤其在⽹络技术普及的今天,他的重要性越来越突出,其实我们每天在⽹上进⾏的信息交流安全验证,我 们在使⽤的操作系统密钥原理,⾥⾯都有它的⾝影,特别对于那些研究信息安全有兴趣的朋友,这更是⼀个打开信息世界的钥匙,他在hack世界⾥⾯也是⼀个研 究的焦点.我是⼀个门外汉,利⽤这个周末了⼀些资料,胡乱写了⼀点关于hash的⽂章,也有不少是我⾃⼰的分析,这期间肯定还有不对的地⽅,还请朋友们 多多指出错误,我抛砖引⽟希望⼤家批评指导。

本文发布于:2024-09-23 10:20:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/398296.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   信息   时候   数据   校验   函数   协议   传输
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议