區(qū)塊鏈之所以能夠解決人與人之間的信任問(wèn)題,很大程度得歸功于它的不可篡改性,而這種特性本質(zhì)上又是基于密碼學(xué)算法來(lái)實(shí)現(xiàn)的。當(dāng)下區(qū)塊鏈技術(shù)主要運(yùn)用了密碼學(xué)的兩大部分:哈希算法和非對(duì)稱(chēng)加密。如果說(shuō)密碼學(xué)是區(qū)塊鏈的基石,那么哈希就是密碼學(xué)的基礎(chǔ),理解哈希就是理解數(shù)字簽名和加密通信等技術(shù)的必要前提。

每當(dāng)聊到區(qū)塊鏈的話(huà)題,人們總會(huì)頻繁提及“哈?!?、“哈希函數(shù)”、“哈希算法”等詞匯,事實(shí)上,在區(qū)塊鏈小白群體中,有近一半的人都沒(méi)有真正弄懂哈希算法。
說(shuō)唱有嘻哈,算法有哈希
哈希算法是區(qū)塊鏈技術(shù)中運(yùn)用得最多的算法之一,基于密碼學(xué)中的哈希函數(shù),一直被廣泛用于構(gòu)建區(qū)塊和確認(rèn)交易的完整性上。是區(qū)塊鏈中保證交易信息不被篡改的一種單向密碼機(jī)制,在接受一段明文后,能夠以一種不可逆的方式轉(zhuǎn)化為一段固定位數(shù)的散列數(shù)據(jù)。

可以簡(jiǎn)單理解為,哈希算法是一種特殊的函數(shù),利用這個(gè)函數(shù),無(wú)論輸入值字符有多長(zhǎng),都可得到一個(gè)固定長(zhǎng)度的輸出值。即可以將任意長(zhǎng)度的輸入變換為固定長(zhǎng)度的輸出,比特幣中輸出值固定為256bit長(zhǎng)度,所得到的輸出值就是人們所說(shuō)的哈希值。
哈希算法之所以會(huì)在區(qū)塊鏈技術(shù)中被大量使用,主要源于防篡改、單向性以及抗碰撞能力,正是這三大特點(diǎn)才能賦予區(qū)塊鏈匿名、唯一和不可篡改的特性,保障整個(gè)區(qū)塊鏈體系的安全。

防篡改
不可篡改是區(qū)塊鏈最重要的特性之一,所謂的區(qū)塊鏈防篡改能力指的是用戶(hù)無(wú)法對(duì)任意一個(gè)輸入值進(jìn)行修改。以比特幣舉例,比特幣系統(tǒng)使用哈希算法把交易生成數(shù)據(jù)摘要,當(dāng)前區(qū)塊里面包含上一個(gè)區(qū)塊的哈希值,后面一個(gè)區(qū)塊又包含當(dāng)前區(qū)塊的哈希值,就這樣一個(gè)接一個(gè)的連接起來(lái)。以此類(lèi)推,后面生成的區(qū)塊不僅可以查找到前面連接的所有區(qū)塊也能驗(yàn)證前面區(qū)塊的數(shù)據(jù)是否被更改。這樣,篡改的成本就會(huì)提高,除非能破解整條鏈條上的所有哈希值,否則,數(shù)據(jù)一旦上鏈,將不可更改。
單向性
哈希算法是一種單向密碼體制,是一個(gè)從明文到密文的不可逆映射,只有加密過(guò)程,沒(méi)有解密過(guò)程。在哈希算法中輸入一串明文字符可得到具體輸出值,但通過(guò)輸出值卻無(wú)法反推輸入值,即加密過(guò)程不可逆。這就意味著當(dāng)用戶(hù)輸入A數(shù)據(jù)后,借助哈希算法可輸出H(A)結(jié)果,但利用H(A)倒推A則不可行,用戶(hù)不能通過(guò)輸出的散列數(shù)據(jù)反算出輸入明文。在區(qū)塊鏈數(shù)據(jù)打包生成區(qū)塊的過(guò)程中,正是基于哈希算法的單向性,才能保護(hù)區(qū)塊鏈交易信息的安全。
抗碰撞
在密碼學(xué)里,碰撞表示兩個(gè)不同輸入產(chǎn)生相同輸出。哈希函數(shù)中大部分的輸入,都能的得到獨(dú)一無(wú)二的輸出,想要找到兩個(gè)不同輸入產(chǎn)生相同輸出的幾率極低,但依舊有存在碰撞的可能。在區(qū)塊鏈運(yùn)用場(chǎng)景中,任何賬戶(hù)地址和交易都需要基于哈希算法生成的,正是由于抗碰撞的功能,才能保證賬戶(hù)地址和交易在整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中的唯一性,無(wú)論用戶(hù)交易流程多長(zhǎng),交易方多少,在區(qū)塊鏈的分布式賬本中都是獨(dú)一無(wú)二的存在。
從哈希概念誕生至今,市面上已經(jīng)提出過(guò)幾十種哈希算法,其中以MD4、MD5、SHA-1、SHA-256、SHA-3為代表的 MD 系列和 SHA 系列是哈希算法中最主流的兩大類(lèi)型。在區(qū)塊鏈中,哈希函數(shù)的主要價(jià)值是防篡改。作為信息技術(shù)領(lǐng)域的基石,哈希算法也是區(qū)塊鏈協(xié)議的重要組成部分,公鏈、地址生成、挖礦過(guò)程等都需要哈希算法的參與。而哈希算法計(jì)算的難度值對(duì)保證區(qū)塊鏈系統(tǒng)的安全意義重大,在龐大的數(shù)據(jù)庫(kù)中,哈希值更為短小精簡(jiǎn),更容易被找到,因此在區(qū)塊鏈技術(shù)應(yīng)用中,基于哈希算法的存儲(chǔ)與加密,讓數(shù)據(jù)存儲(chǔ)和被查詢(xún)的速度變得更快,也讓數(shù)據(jù)傳播更為安全。