哈希的本質(zhì)是一個(gè)采用哈希算法的數(shù)學(xué)函數(shù),它被廣泛應(yīng)用于區(qū)塊鏈中構(gòu)建區(qū)塊以及確認(rèn)交易信息的完整性上。
什么是哈希算法?哈希算法是密碼學(xué)中的一個(gè)重要算法,哈希的英文為Hash。
哈希算法有一個(gè)輸入和一個(gè)輸出,其輸入稱為消息,輸出值是根據(jù)消息內(nèi)容計(jì)算出的值,稱為哈希值(又或稱為摘要)
哈希算法函數(shù)的定義描述:
(1)輸入消息長度任意
(2)輸出哈希值長度固定
簡單的理解,就是一串任意長的數(shù)據(jù)經(jīng)過哈希函數(shù)的計(jì)算后,生成一串長度固定的短數(shù)據(jù)。
當(dāng)今區(qū)塊鏈技術(shù)中大量使用的哈希算法函數(shù)是SHA-256。SHA-256是SHA-2算法家族中的一種,SHA全稱是安全哈希算法(Secure Hash Algorithm)。SHA-256的輸入消息長度為任意位數(shù),其輸出的哈希值長度固定為二進(jìn)制的256位。SHA-256具備密碼哈希函數(shù)的基本特性
哈希函數(shù)有三個(gè)重要的特征。
第一,哈希的單向性、就是我們只能夠把任意長度的數(shù)據(jù),通過哈希函數(shù)生成一個(gè)固定長度的哈希值,反過來卻不可能通過這個(gè)哈希值再推導(dǎo)出原來的輸入數(shù)據(jù),這就是哈希的單向性。
很多人好奇區(qū)塊鏈?zhǔn)窃趺葱纬傻模唵卫斫?,區(qū)塊鏈=區(qū)塊+鏈。例如我們把一個(gè)區(qū)塊打包以后就會通過哈希函數(shù)計(jì)算出一個(gè)哈希值,這個(gè)值就會存放到下一個(gè)區(qū)塊中,下一個(gè)區(qū)塊里的哈希值就把上一個(gè)區(qū)塊給鎖定了,這就是哈希鎖定。區(qū)塊鏈的不可更改就是從這里來的,因?yàn)槿绻惆亚懊娴膮^(qū)塊數(shù)據(jù)篡改了,那和后面區(qū)塊里的哈希值,就不能夠?qū)?yīng)了。在區(qū)塊鏈中,每一個(gè)區(qū)塊都對上一個(gè)區(qū)塊進(jìn)行內(nèi)容鎖定,這就是哈希鎖定。
第二,哈希的唯一性。我們把一個(gè)任意長的數(shù)據(jù)通過哈希函數(shù)生成一個(gè)哈希值,生成的這個(gè)哈希值是唯一的。不會存在兩個(gè)不同的輸入生成的哈希值相同的這種情況。但是這句話是有問題的,為什么呢?你把任意長數(shù)據(jù)變成短數(shù)據(jù),或者說你把大的文件變成一個(gè)短的哈希值,在科學(xué)上它是有一定的概率會形成相同的哈希值的,只是這個(gè)概率極低極低,到目前為止,采用SHA256算法的哈希函數(shù)還沒有發(fā)生過相同哈希值的碰撞事件,所以說哈希的唯一性,就是這么來的。
	第三,哈希的離散性。離散性是什么意思呢,就是兩個(gè)非常相近的文件,或者說兩個(gè)只相差一位數(shù)的數(shù)據(jù),計(jì)算出來的兩個(gè)哈希值卻是天壤之別,是沒有任何相似的地方的,這就是哈希的離散性。這個(gè)特性有效地規(guī)避了一些特定的攻擊,如果兩個(gè)文件只相差那么一丟丟,他計(jì)算出來的哈希值也很相近的話,是很容易遭受到攻擊的。以上所述是哈希的三個(gè)重要特征。
	審核編輯:符乾江
- 
                                數(shù)學(xué)函數(shù)
                                +關(guān)注
關(guān)注
0文章
9瀏覽量
6459 - 
                                哈希算法
                                +關(guān)注
關(guān)注
1文章
56瀏覽量
11081 
發(fā)布評論請先 登錄
          
        
        
哈希算法函數(shù)的定義描述及其特征介紹
                
 
           
            
            
                
            
評論