上鏈就能防篡改?一文讀懂哈希算法

區(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ù)傳播更為安全。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址 https://mbinary.coding.me/introduction-to-bitcoin.ht...
    mbinary閱讀 5,708評(píng)論 0 4
  • 原文地址 https://mbinary.coding.me/introduction-to-block-chai...
    mbinary閱讀 958評(píng)論 0 0
  • 了解自己拖延的原因。圖片發(fā)自簡(jiǎn)書(shū)App 畫(huà)出自己的拖延自畫(huà)像。找出拖延的根本原因。圖片發(fā)自簡(jiǎn)書(shū)App 拖延的時(shí)候,...
    成冬霞閱讀 235評(píng)論 0 0
  • 文/熠歆 為了不吸油,我先將藕片用水焯五分鐘,然后,鍋里放油,下干辣子,大蒜末,酸菜(家里媽媽自己制作的),然后下...
    熠歆閱讀 816評(píng)論 6 5
  • 今天是孤單的,心緒不寧的一天吧
    要做配得上電腦的人閱讀 248評(píng)論 0 0

友情鏈接更多精彩內(nèi)容