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

摘要:Hash算法一般都是计算敏感型。也就是说计算资源是瓶颈,主频越高的CPU运行Hash计算的速度也越快,随后又引入了更高校的GPU来进行哈希计算。

区块链的核心思想是去中心化,小编写作的核心思想是去妖魔化。

在这个区块链已经被妖魔化的世界,如何化繁为简、去伪存真至关重要,要准确全面了解一个技术,从底层技术入手,弄清楚基础概念是必要的。

对于区块链来说,哈希算法的理解至关重要,很多白皮书对哈希运算只是一笔带过,并没有详细的介绍,这里小编会用通俗的语言给大家讲解什么是哈希运算,以便大家更好的了解区块链技术。 

哈希定义

Hash(哈希或散列)算法是一种常见的计算机基础算法,它能将任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,通常情况下,不同的输入很难映射为相同的Hash值。

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

这说明,对于一个文件,无需查看其内容,只要其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或更安全的算法。

算法特性

1. 正向快速

无论你对同一个输入尝试多少次哈希运算,都会在有限时间内返回一个固定的哈希值。

这里我们尝试用10年买的“小霸王”来跑下运算速度,看看具体消耗了多少时间。0.4毫秒。

2. 逆向抗力

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

这里用“几乎很难”是因为,逆推找到输入只能应用穷举法,也就是一个一个去试。

运气好的话试一次就出来了,运气差的话要试2^128-1次,可以肯定的是,我们Astar老大的10代世孙肯定是看不到试出来的那一天了。

平均下来,试出来的期望是2^127次,所以还是看不到。

3. 敏感特性

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

Hash算法一般都是计算敏感型。也就是说计算资源是瓶颈,主频越高的CPU运行Hash计算的速度也越快,随后又引入了更高校的GPU来进行哈希计算。

这也就导致了近两年显卡的价格大大上涨,所以喜欢吃鸡的小伙伴痛苦了,更换显卡的成本至少3000元。 

4. 冲突避免

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

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

如果无法找到任意两个发生Hash碰撞的输入,则称算法有“强碰撞抗性”。

作者:AA加速基金投资总监 侯震


本文为 品途商业评论(https://www.pintu360.com)投稿作者:侯震 的原创作品,责编:冯群英。欢迎转载,转载请注明原文出处:。本文仅代表作者观点,不代表品途商业评论观点。

发表评论

您的操作太快喽,请输入验证码

您输入的验证码不正确。

看不清? 点击更换
确定