哈希值是什么意思?哈希算法
發(fā)布時(shí)間:2025-08-17 | 來源:互聯(lián)網(wǎng)轉(zhuǎn)載和整理
哈希值是什么意思?我們可以簡單認(rèn)為哈希值就是將“賬頁信息”進(jìn)行哈希算法,計(jì)算得到一串字符密碼,那么哈希算法就是區(qū)塊鏈保證交易信息不被篡改的單向密碼機(jī)制。哈希算法在接收一段明文(也就是賬頁信息)后,以一種不可逆的方式將其轉(zhuǎn)化為一段長度較短、位數(shù)固定的散列數(shù)據(jù)。它有兩個(gè)特點(diǎn):1.加密過程不可逆,也就是說我們無法通過輸出的散列數(shù)據(jù)倒推原本的明文是什么。可以這樣理解:小明對(duì)火星人說了一段話,火星人將這段話翻譯成了%*……¥&&%%@,地球人沒有一個(gè)人能將%*……¥&&%%@翻譯出來,這樣就保證了誰也不能篡改小明的那段話了。2.輸入的明文與輸出的散列數(shù)據(jù)一一對(duì)應(yīng),任何一個(gè)輸入信息的變化,都必將導(dǎo)致最終輸出的散列數(shù)據(jù)的變化,這意味著這篇賬頁就算改了一個(gè)標(biāo)點(diǎn)符號(hào)也會(huì)被發(fā)現(xiàn),區(qū)塊鏈這個(gè)賬簿就將不承認(rèn)這篇賬頁了。那么,什么叫哈希算法呢?哈希算法是一種加密算法哈希函數(shù)(HashFunction),也稱為散列函數(shù)或雜湊函數(shù)。哈希函數(shù)是一個(gè)公開函數(shù),可以將任意長度的消息M,映射成為一個(gè)長度較短且長度固定的值H(M),稱H(M)為哈希值、散列值(HashValue)、雜湊值或者消息摘要(MessageDigest)。它是一種單向密碼體制,即一個(gè)從明文到密文的不可逆映射,只有加密過程,沒有解密過程。它的函數(shù)表達(dá)式為:h=H(m)無論輸入是什么數(shù)字格式、文件有多大,輸出都是固定長度的比特串。以比特幣使用的Sh256算法為例,無論輸入是什么數(shù)據(jù)文件,輸出就是256bit。每個(gè)bit就是一位0或者1,256bit就是256個(gè)0或者1二進(jìn)制數(shù)字串,用16進(jìn)制數(shù)字表示的話,就是多少位呢?16等于2的4次方,所以每一位16進(jìn)制數(shù)字可以代表4位bit。那么,256位bit用16進(jìn)制數(shù)字表示,當(dāng)然是256除以4等于64位(比特串也沒有跑出周易的64卦)。于是你通??吹降墓V?,就是這樣的了:00740f40257a13bf03b40f54a9fe398c79a664bb21cfa2870ab07888b21eeba8。這是從btc.com上隨便拷貝的一個(gè)哈希值,不放心的話你可以數(shù)一下,是不是64位~Hash函數(shù)的特點(diǎn)哈希(Hash)函數(shù)具有如下特點(diǎn)。易壓縮:對(duì)于任意大小的輸入x,Hash值的長度很小,在實(shí)際應(yīng)用中,函數(shù)H產(chǎn)生的Hash值,其長度是固定的。易計(jì)算:對(duì)于任意給定的消息,計(jì)算其Hash值比較容易。單向性:對(duì)于給定的Hash值,要找到使得在解算上是不可行的,即求得Hash的逆向解算,很困難。在給定某個(gè)哈希函數(shù)H和哈希值H(M)的情況下,你想得出M,這在計(jì)算上是不可行的。即從哈希輸出無法倒推輸入的原始數(shù)值。這是哈希函數(shù)安全性的基礎(chǔ)??古鲎残裕豪硐氲腍ash函數(shù)是無碰撞的,但在實(shí)際算法的設(shè)計(jì)中很難做到這一點(diǎn)。有兩種抗碰撞性:一種是弱抗碰撞性,即對(duì)于給定的消息,要發(fā)現(xiàn)另一個(gè)消息,滿足在計(jì)算上是不可行的;另一種是強(qiáng)抗碰撞性,即對(duì)于任意一對(duì)不同的消息,使得在計(jì)算上也是不可行的。高靈敏性:這是從比特位角度出發(fā)的,指的是1比特位的輸入變化會(huì)造成1/2的比特位發(fā)生變化。消息M的任何改變都會(huì)導(dǎo)致哈希值H(M)發(fā)生改變。即如果輸入有微小不同,哈希運(yùn)算后的輸出一定不同