单向散列函数怎么实现

发布时间:2022-01-15 10:47:30 作者:iii
来源:亿速云 阅读:133

这篇文章主要讲解了“单向散列函数怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“单向散列函数怎么实现”吧!

单向散列函数

在介绍单向散列函数之前,我们先了解一下什么情况下需要使用到单向散列函数。

如果你需要从国外的网站上下载一个软件,但是因为种种原因,国外的网络太慢了,下载几个G的数据几乎是不可能的。刚好国内有镜像网站,可以从国内下载数据。但是如何保证国内的镜像不是被篡改过后的呢?这个时候就需要单向散列函数了。一般来说网站会提供MD5或者SHA的值作为验证值。

单向散列函数有一个输入和输出。输入称为消息,输出称为散列值。

散列值的长度跟消息的长度无关,不论多少大小的长度的消息,都会计算出固定长度的散列值。

单向散列函数的性质

单向散列函数具有下面几个特性:

  1. 能够根据任意长度的消息计算出固定长度的散列值。

  2. 计算速度要快。

  3. 消息不同,散列值也不同。

    这就意味着,如果仅仅是一点点的变动都会引起整个散列值的巨大变化。

    因为散列值的大小是固定的,所以有可能会出现不同的消息产生相同散列值的情况。这种情况叫做碰撞。

    难以发现碰撞的性质被称为抗碰撞性。当给定某条消息的散列值时,必须保证很难找到和该消息具有相同散列值的另一条消息。

  4. 单向散列函数必须具有单向性。所谓单向性是指无法通过散列值来反推出消息的性质。

单向散列函数的实现

单向散列函数有很多实现方式,你甚至可以自己写一个。常见的如MD4,MD5, MD(Message Digest)是消息摘要的缩写。

MD4和MD5是由Rivest在1990年设计的,现在已经不再安全了。

SHA-1 是由NIST设计的一种能够产生160比特散列值的单向散列函数。现在已经不推荐使用。

SHA-256, SHA-384, SHA-512同样是由NIST设计的单向散列函数,他们的散列长度分别是256,384,512比特。这几种单向散列函数统称为SHA-2。

SHA-1已经在2005年被攻破了。

SHA-3是在2005年SHA-1被攻破的背景下开始制定的,SHA-3是通过公开竞争的方法选拔出来的,最终被选中的算法叫做Keccak算法。

对单向散列算法的攻击

单向散列算法最后的hash值是有固定长度的,所以只要我们愿意,总是可以不断的重试,从而找到两个相同的hash值。

感谢各位的阅读,以上就是“单向散列函数怎么实现”的内容了,经过本文的学习后,相信大家对单向散列函数怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 单向双向链表的实现
  2. 用golang实现的单向链表

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:一次性密码本加密的方式是什么

下一篇:springboot整合quartz定时任务框架的方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》