快速入門區塊鏈密碼學的基石——哈希函數

區塊鏈技術並不是單純的某一種技術,而是多種技術的集成和創新,其中包含了P2P網絡通信技術、分佈式存儲技術、共識機制、密碼學技術、智能合約等等,其中的

密碼學技術可以是區塊鏈技術的核心,而哈希函數是密碼學應用最為廣泛的一種數學函數。

快速入門區塊鏈密碼學的基石——哈希函數

以比特幣為例,哈希函數應用在比特幣的挖礦、密鑰管理、交易等幾乎所有的過程中。

接下來,我們就來介紹哈希函數。

哈希函數的主要作用在於可以將任意長度的輸入數據通過哈希計算轉變成固定長度的輸出數據,輸出的結果就是哈希值。

快速入門區塊鏈密碼學的基石——哈希函數

業界所使用的哈希函數,是由美國國家標準與技術研究院(NIST)發佈的,目前經歷了SHA-0,SHA-1,SHA-2,SHA-3四個階段。比特幣系統採用的是SHA-2標準系列中的SHA-256,產生是256位bit長度的哈希值。

哈希函數之所以能在區塊鏈中得到廣泛的應用,並不是因為哈希函數的作用,而是因為哈希函數的五個特點

  • 高靈敏性

對於輸入數據,只要發生了變化,哪怕是一個比特位級的變化,都會導致最終的哈希值不同。在區塊鏈中,這個特性可以有效的防止數據篡改,因為篡改了任何數據,計算出來的哈希值都會與原先的哈希值不同。

  • 易壓縮

哈希函數可以接受任意長度的數據輸入,而且計算出來的結果是固定長度的。當然這要取決於採用的是哪種哈希函數,SHA-128計算出的結果是128位,SHA-256計算出來的結果是256位。在比特幣系統中,可以將比特幣的交易通過SHA-256進行哈希計算,這樣所有的交易都會有一個唯一的固定長度的哈希值,來唯一的標識

這筆一個交易。

  • 效率高

哈希函數雖然可以接受任意長度的數據輸入,但是其計算難度是隨著輸入數據成線性的增長。

快速入門區塊鏈密碼學的基石——哈希函數

  • 單向性

單向性指的是哈希函數只能實現從輸入數據計算出哈希值,但是不能通過計算出的哈希值反向計算出輸入數據,這是哈希函數最主要,也是最基本的特徵,也是哈希函數成為密碼學最主要函數的原因。在比特幣系統中,為了進行比特幣的轉賬交易,需要知道對方的比特幣轉賬地址,而轉賬地址是由對方的公鑰通過哈希計算生成的,由於哈希函數單向性的特點,我們無法通過對方提供的比特幣地址反向計算出公鑰。

快速入門區塊鏈密碼學的基石——哈希函數

  • 抗碰撞性

在介紹抗碰撞性前,必須要介紹一下什麼是哈希碰撞。哈希碰撞指的是有兩個不同的輸入,在相同的哈希函數計算下,得到了相同的哈希值。那這種情況會不會出現呢,顯然是有可能,只不過概率非常小罷了。比如SHA-256的輸出結果只有256位,而輸入則是無窮的,所以總會有一定機率出現哈希碰撞。理想的哈希函數應該是沒有碰撞的,但是在實際算法的設計中很難做到這一點。所以抗碰撞性是評價一個哈希函數是否符合標準的重要特性,但是也正是因為哈希函數抗碰撞性的存在,才使得在比特幣系統的挖礦算法中採用了以哈希碰撞的方式作為挖礦的主要原理。

快速入門區塊鏈密碼學的基石——哈希函數

在瞭解了哈希函數之後,接下來的內容,我們就可以學習密鑰原理了。 下期見!

快速入門區塊鏈密碼學的基石——哈希函數


分享到:


相關文章: