哈希算法是什么?常见的哈希算法有哪些

来源:区块链资讯 作者:区块链投资 阅读: 2020-11-24 18:23

  哈希算法是什么?在区块链技术的实际开发中,常常使用的算法就是哈希算法。

  哈希是一种加密算法,也称为散列函数或杂凑函数。

  哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要。

  它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。

  

哈希算法是什么?常见的哈希算法有哪些

 

  哈希算法是什么

  哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。

  哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。

  这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。

  常见的哈希算法有哪些

  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.SHA-1及其他

  SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。

  SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。

  哈希算法原理介绍

  散列表,它是基于高速存取bai的角度设计的du,也是一种典型的“空zhi间换时间”的做法。

  顾名思义,该数据结构能够理解dao为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。

  散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行访问的数据结构。

  也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

  比方我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间。70/100=0.7.这个数字称为负载因子。

  我们之所以这样做,也是为了“高速存取”的目的。我们基于一种结果尽可能随机平均分布的固定函数H为每一个元素安排存储位置,这样就能够避免遍历性质的线性搜索,以达到高速存取。

  可是因为此随机性,也必定导致一个问题就是冲突。

  所谓冲突,即两个元素通过散列函数H得到的地址同样,那么这两个元素称为“同义词”。这类似于70个人去一个有100个椅子的饭店吃饭。散列函数的计算结果是一个存储单位地址,每一个存储单位称为“桶”。设一个散列表有m个桶,则散列函数的值域应为[0.m-1]。

  哈希算法有什么用途

  哈希算法可以检验信息是否是相同的,这样的优势可以节省重复文件传送的时间。

  举一个生活中很平常的例子,我们在生活工作中会使用一些软件给别人传送文件数据,如果有人传送了一份文件给一个人,然后又有一个人传送了相同的文件给了另外一个人,那么这个社交软件在第二次传送文件的时候会对比两次传送的哈希值,发现是相同的,该软件就不会再次上传文件给服务器了。

  除此之外,哈希算法还可以检验信息的拥有者是否真实。

  比如,我们在一个网站注册一个账号,如果网站把密码保存起来,那这个网站不论有多安全,也会有被盗取的风险。

  但是如果用保存密码的哈希值代替保存密码,就没有这个风险了,因为哈希值加密过程是不不可逆的。

相关推荐