区块链中的HASH算法
Posted 链库科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链中的HASH算法相关的知识,希望对你有一定的参考价值。
任意长度的二进制值(明文) 映射为较短的固定长度的二进制值(hash值) ,并且不同的明文很难映射为相同的hash值。
哈希函数具有输入敏感特性。也就是说,如果输入数据发生微小改变——比如改一个字符,那么输出将发生很大的变化。这带来两点好处:第一,你无法通过输出的变化,来推测输入发生了什么变化。第二,保存哈希值可以验证数据是否被篡改。一般的,hash算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的CPU进行 hash 的速度也越快。也有一些hash算法不是算力敏感的,例如scrypt,需要大量的内存资源,节点不能通过简单的增加更多 CPU 来获得 hash 性能的提升。
注:MD5是一个经典的hash算法,其和SHA-1算法都已被证明安全性不足应用于商业场景。为了提高安全性,NIST NSA 还设计出了 SHA-224、SHA-256、SHA-384,和 SHA-512算法(统称为SHA-2) ,跟SHA-1算法原理类似。比特币使用的是 SHA256。
所以一个优秀的hash算法,需要冲突避免,即很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。
eg:文字"version1" 和"version2" 进行MD5 HASH后二者的MD5值就天差地别了
"version1"的MD5 HASH值为 "966634ebf2fc135707d6753692bf4b1e";
"version2"的MD5 HASH值为 "2e0e95285f08a07dea17e7ee111b21c8"
但是还有一种可能
1、"0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc94
2feb2da115a3f4155cbb8607497386656d7d1f34a42059d78f5a8dd1ef"
2、"0e306561559aa787d00bc6f70bbdfe3404cf03659e744f8534c00ffb659c4c8740cc94
2feb2da115a3f415dcbb8607497386656d7d1f34a42059d78f5a8dd1ef"
上面这两段文字只有红色加大的数字不同,但是MD5 HASH后的值如下:
1、“cee9a457e790cf20d4bdaa6d69f01e41”
2、”cee9a457e790cf20d4bdaa6d69f01e41”
这个就是碰撞案例,像这种案例很多,现在的计算机只要数秒就能找到MD5的一个碰撞案例,因此,MD5在数年前就已经不被推荐作为应用中的散列算法方案,取代它的是SHA家族算法,也就是安全散列算法(Secure Hash Algorithm,缩写为SHA)。
安全散列算法与MD5算法本质上的算法是类似的,但安全性要领先很多——这种领先型更多的表现在碰撞攻击的时间开销更大,当然相对应的计算时间也会慢一点。SHA家族算法的种类很多,有SHA0、SHA1、SHA256、SHA384等等。其中SHA1是现在用途最广泛的一种算法,但是在2017年2月破灭了,谷歌宣布实现了 SHA-1 碰撞。所以对于一些大的商业机构来说, MD5 和 SHA1 已经不够安全,推荐至少使用 SHA2-256 算法。
创交会平台以互联网运营、资本运营、文化运营为基础;以信息交流、人脉互动、供求配对为纽带;以股权合作、会员合作为模式;来实现产业融合整合、联盟供求配对和会员互惠共赢。
这是一个聚千万人脉的老板圈子
CNS计划是全球企业家创新创业商业联盟针对特定目标客户群体建立的预售商品积分系统和数字资产流通的网络平台,充分应用了互联网技术、区块链技术、分布式技术和大数据交换技术,是共享经济时代的代表性产物。
看完记得点个赞哦!
以上是关于区块链中的HASH算法的主要内容,如果未能解决你的问题,请参考以下文章