淺析區(qū)塊鏈中的哈希算法

哈希算法是區(qū)塊鏈中用的最多的一種算法,它被廣泛的使用在構(gòu)建區(qū)塊和確認(rèn)交易的完整性上。
淺析區(qū)塊鏈中的哈希算法

它是一類數(shù)學(xué)函數(shù)算法,又被稱為散列算法,需具備三個(gè)基本特性:

1、其輸入可為任意大小的字符串
2、它產(chǎn)生固定大小的輸出
3、它能進(jìn)行有效計(jì)算,也就是能在合理的時(shí)間內(nèi)就能算出輸出值

如果要求哈希算法達(dá)到密碼學(xué)安全的話,我們還要求它具備以下三個(gè)附加特性:
1、碰撞阻力:
是指對(duì)于兩個(gè)不同的輸入,必須產(chǎn)生兩個(gè)不同的輸出。如果對(duì)于兩個(gè)不同的輸入產(chǎn)生了相同的輸出,那么就說明不具備碰撞阻力,或是弱碰撞阻力。

2、隱秘性:
也被稱為不可逆性,是指 y = HASH(x)中,通過輸入值x,可以計(jì)算出輸出值y,但是無法通過y值去反推計(jì)算出x值。為了保證不可逆,就得讓x的取值來自一個(gè)非常廣泛的集合,使之很難通過計(jì)算反推出x值。

3、謎題友好:
這個(gè)特性可以理解為,謎題是公平友好的,例如算法中 y = HASH(x),如果已知y值,想去得到x值,那就必須暴力枚舉,不斷的嘗試才能做到,并且沒有比這更好的辦法,沒有捷徑。

哈希算法有很多,比特幣主要使用的哈希算法是SHA-256算法。除此之外,還有其他一些哈希算法也很流行,例如 MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 等,其中 MD5、SHA-1 已被證明了不具備 強(qiáng)碰撞阻力,安全性不夠高,因此市場(chǎng)上不再推薦使用。