時間:2023-08-18|瀏覽:266
計算機密碼學對區塊鏈技術來說可謂是重中之重。我們在閱讀各種區塊鏈項目的白皮書或者區塊鏈相關書籍中,也多少會提及XX算法,如哈希算法。那么什么是哈希算法呢?
哈希算法是一種只能加密,不能解密的密碼學算法,可以將任意長度的信息轉換成一段固定長度的字符串。
哈希是一種加密算法。哈希函數(Hash Function),也稱為散列函數或雜湊函數。哈希函數是一個公開函數,可以將任意長度的消息M映射成為一個長度較短且長度固定的值H(M),稱H(M)為哈希值、散列值(Hash Value)、雜湊值或者消息摘要(Message Digest)。它是一種單向密碼體制,即一個從明文到密文的不可逆映射,只有加密過程,沒有解密過程。
它的函數表達式為:h=H(m)。無論輸入是什么數字格式、文件有多大,輸出都是固定長度的比特串。以比特幣使用的Sh256算法為例,無論輸入是什么數據文件,輸出就是256bit。
哈希算法可以將任意長度的信息轉換成一段固定長度的字符串。這段字符串有以下幾個特點:
1. 就算輸入值只改變一點,輸出的哈希值也會天差地別。 2. 只有完全一樣的輸入值才能得到完全一樣的輸出值。 3. 輸入值與輸出值之間沒有規律,所以不能通過輸出值算出輸入值。要想找到指定的輸出值,只能采用枚舉法:不斷更換輸入值,尋找滿足條件的輸出值。
哈希算法保證了比特幣挖礦不能逆向推導出結果。所以,礦工持續不斷地進行運算,本質上是在暴力破解正確的輸入值,誰最先找到誰就能獲得比特幣獎勵。