哈希的本質(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ū)塊打包以后就會(huì)通過哈希函數(shù)計(jì)算出一個(gè)哈希值,這個(gè)值就會(huì)存放到下一個(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è)哈希值是唯一的。不會(huì)存在兩個(gè)不同的輸入生成的哈希值相同的這種情況。但是這句話是有問題的,為什么呢?你把任意長數(shù)據(jù)變成短數(shù)據(jù),或者說你把大的文件變成一個(gè)短的哈希值,在科學(xué)上它是有一定的概率會(huì)形成相同的哈希值的,只是這個(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瀏覽量
6466 -
哈希算法
+關(guān)注
關(guān)注
1文章
56瀏覽量
11094
發(fā)布評論請先 登錄
Molex OTS零哈希電纜組件技術(shù)解析與應(yīng)用指南
MD5信息摘要算法實(shí)現(xiàn)一(基于蜂鳥E203協(xié)處理器)
Camellia算法的實(shí)現(xiàn)(基于開源蜂鳥E203協(xié)處理器)
復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)
AES加解密算法邏輯實(shí)現(xiàn)及其在蜂鳥E203SoC上的應(yīng)用介紹
TCORDIC算法實(shí)現(xiàn)正余弦函數(shù)
查找表與多項(xiàng)式近似算法實(shí)現(xiàn)初等函數(shù)
國密系列算法簡介及SM4算法原理介紹
從哈希極化到零擁塞:主動(dòng)路徑規(guī)劃在RoCE網(wǎng)絡(luò)中的負(fù)載均衡實(shí)踐

哈希算法函數(shù)的定義描述及其特征介紹
評論