1. 链一财经首页
  2. 资讯

我有一对双胞胎小姨子,但是我没有同一个哈希值

区块链的核心思想是去中心化,小编写作的核心思想是去妖魔化。在这个区块链已经被妖魔化的世界,如何化繁为简、去伪存真至关重要,要准确全面了解一个技术,从底层技术入手,弄清楚基础概念是必要的。对于区块链来说,哈希算法的理解至关重要,很多白皮书对哈希运算只是一笔带过,并没有详细的介绍,这里小编会用通俗的语言给大家讲解什么是哈希运算,以便大家更好的了解区块链技术。

哈希定义

Hash(哈希或散列)算法是一种常见的计算机基础算法,它能将任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,通常情况下,不同的输入很难映射为相同的Hash值。

例如,计算“Astar区块链实验室很棒!”的SHA-256Hash值。

微信截图_20180502184749.png

这说明,对于一个文件,无需查看其内容,只要其SHA-256Hash计算后结果为cda445c254d7123437d1542423daded0bfffba5545eb084da00a652af797601d,则说明文件内容极大概率为“Astar区块链实验室很棒!”。

常见算法

目前主流的Hash算法包括MD5和SHA系列算法。

MD5(消息摘要算法第五版)是Rivest在1991年基于MD4算法开发出技术更加成熟的算法。它输入仍以512位分组来处理输入的信息,最后生成一个128位散列值。MD5比MD4复杂度大一些,但却更为安全。MD5已被证明不具备“强碰撞抗性”。

SHA(Secure Hash Algorithm)是一个密码散列函数家族,并不是一个算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,算法原理类似。

综上,MD5和SHA1已经被破解,一般推荐使用至少SHA-256或更安全的算法。

算法特性

正向快速

无论你对同一个输入尝试多少次哈希运算,都会在有限时间内返回一个固定的哈希值。这里我们尝试用10买的“小霸王”来跑下运算速度,看看具体消耗了多少时间。0.4毫秒。

2.png

逆向抗力

已经给定的Hash值,在有限时间内几乎很难逆推找到输入。

这里用几乎很难是因为,逆推找到输入只能应用穷举法,也就是一个一个去试。运气好的话试一次就出来了,运气差的话要试2^128-1次,可以肯定的是,我们Astar老大的10代世孙肯定是看不到试出来那一天了。平均下来,试出来的期望是2^127次,所以还是看不到。

敏感特性

 输入值只要有微小的改动,输出Hash值就会大不一样。

微信截图_20180502184950.png

Hash算法一般都是计算敏感型。也就是说计算资源是瓶颈,主频越高的CPU运行Hash计算的速度也越快,随后又引入了更高校的GPU来进行哈希计算。这也就导致了近两年显卡的价格大大上涨,所以喜欢吃鸡的小伙伴痛苦了,更换显卡的成本至少3000元。

冲突避免

很难找到两段不同的输入,使得它们的Hash值一样(发生碰撞)。也就是说只要输入不同,那么他们的输出几乎不同。

冲突避免又称为“抗性碰撞”,分为“弱抗碰撞性”和“强碰撞抗性”。在给定输入的前提下,无法找到另一个有相同Hash值的输入,则称算法具有“弱抗碰撞性”。如果无法找到任意两个发生Hash碰撞的输入,则称算法有“强碰撞抗性”。


文章原标题:侯震:我有一对双胞胎小姨子,但是我没有同一个哈希值  原作者:侯震

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

微信:kkyves

邮件:kefu@lianyi.com

时间:7x24,节假日bu休息

QR code