在开始接触区块链开始就一定会提到Hash算法,在之前我认为通过这种计算方式,输入不同的输入值可以快速的得到长度一致但是值完全不同的输出值,而且这个计算不可逆。这个应用理解没有问题,只是不够明确及全面。
一个好的Hash算法的四大特质为:
一、正向快捷:给定明文及算法前提下,在规定时间、规定资源能够计算初HASH值。
二、逆向困难:给定HASH值和算法前提下,在规定时间内很难或者说基本上不可能获取明文
三、输入敏感:原始输入信息在变化很小的情况下,输出的HASH值会有很大的变化
四、抗碰撞性:很难找到两端不同的明文,对应的的HASH值是一致的;
虽然应用理解的八九不离十,但以前对Hash算法的概念却是错的离谱,我认为Hash就是一种明确的算法,类比理解为加法、减法或者一个公式运算。而实际上Hash算法不单单是指某一种算法,而是一个统一的称呼,可以类比为几何,代数等大学课,而类似比特币使用的SHA-256算法则是Hash算法大家子中的一分子。
理解了这一点,对于各种白皮书中提供的各种算法类型就有了一个底。
非对称加密就得用上Hash,而Hash分很多种,比如前面提过的比特币用的SHA-256,而莱特币用的Scrypt等等
流行算法可是这些算法为什么还分流行不流行呢,又不是搞时尚的。究其原因在于抗碰撞性。
抗碰撞性分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其它明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生 Hash 碰撞的明文,则称算法具有“强抗碰撞性”。
一个算法流行不流行了即可以理解为这个算法有没有被证明是否具备“强抗碰撞性”或/和"弱抗碰撞性"。或者可以说这个算法有没有被破解。
据我查到的资料,2017年2月CWI和Google的研究人员们成功找到了一例SHA1碰撞,而且很厉害的是,发生碰撞的是两个真实的、可阅读的PDF文件。这两个PDF文件内容不相同,但SHA1值完全一样。
所以,对于一些大的商业机构来说, MD5 和 SHA1 已经不够安全,推荐至少使用 SHA2-256 算法(也就是比特币用的那个)。
有理由相信,在未来的某一天,SHA2-256会被破解,而比特币挖矿算法的更换在未来是必然要到来的。
网友评论