簡(jiǎn)單來說,哈希算法就是一種特殊的函數(shù),不論輸入多長(zhǎng)的一串字符,只要通過這個(gè)函數(shù)都可以得到一個(gè)固定長(zhǎng)度的輸出值,這就好像身份證號(hào)碼一樣,永遠(yuǎn)都是十八位而且全國唯一。哈希算法的輸出值就叫做哈希值。
比如哈希是一種加密算法,也稱為散列函數(shù)或雜湊函數(shù)。哈希函數(shù)是一個(gè)公開函數(shù),可以將任意長(zhǎng)度的消息M映射成為一個(gè)長(zhǎng)度較短且長(zhǎng)度固定的值H(M),稱H(M)為哈希值、散列值(Hash Value)、雜湊值或者消息摘要。它是一種單向密碼體制,即一個(gè)從明文到密文的不可逆映射,只有加密過程,沒有解密過程。
哈希算法有三個(gè)特點(diǎn),它們賦予了區(qū)塊鏈不可篡改、匿名等特性,并保證了整個(gè)區(qū)塊鏈體系的完整。第一個(gè)特點(diǎn)是具有單向性。比如輸入一串?dāng)?shù)據(jù),通過哈希算法可以獲得一個(gè)哈希值,但是通過這個(gè)哈希值是沒有辦法反推回來得到輸入的那串?dāng)?shù)據(jù)的。這就是單向性,也正是基于這一點(diǎn),區(qū)塊鏈才有效保護(hù)了我們信息的安全性。
哈希算法的第二個(gè)特點(diǎn)是抗篡改能力,對(duì)于任意一個(gè)輸入,哪怕是很小的改動(dòng),其哈希值的變化也會(huì)非常大。它的這個(gè)特性,在區(qū)塊與區(qū)塊的連接中就起到了關(guān)鍵性的作用。區(qū)塊鏈的每個(gè)區(qū)塊都會(huì)以上一個(gè)區(qū)塊的哈希值作為標(biāo)示,除非有人能夠破解整條鏈上的所有哈希值,否則數(shù)據(jù)一旦記錄在鏈上,就不可能進(jìn)行篡改。
哈希算法的第三個(gè)特點(diǎn)就是抗碰撞能力。所謂碰撞,就是輸入兩個(gè)不同的數(shù)據(jù),最后得到了一個(gè)相同的輸入。就跟我們逛街時(shí)撞衫一樣,而坑碰撞就是大部分的輸入都能得到一個(gè)獨(dú)一無二的輸出。在區(qū)塊鏈的世界中,任何一筆交易或者賬戶的地址都是完全依托于哈希算法生產(chǎn)的。這也就保證了交易或者賬戶地址在區(qū)塊鏈網(wǎng)絡(luò)中的唯一性。
哈希(Hash)是一種加密算法,也稱為散列函數(shù)或雜湊函數(shù)。哈希函數(shù)是一個(gè)公開函數(shù),可以將任意長(zhǎng)度的消息M映射成為一個(gè)長(zhǎng)度較短且長(zhǎng)度固定的值H(M),稱H(M)為哈希值、散列值(Hash Value)、雜湊值或者消息摘要。它是一種單向密碼體制,即一個(gè)從明文到密文的不可逆映射,只有加密過程,沒有解密過程。
一致性hash算法提出了在動(dòng)態(tài)變化的Cache環(huán)境中,判定哈希算法好壞的四個(gè)定義:
1、平衡性(Balance):平衡性是指哈希的結(jié)果能夠盡可能分布到所有的緩沖中去,這樣可以使得所有的緩沖空間都得到利用。很多哈希算法都能夠滿足這一條件。
2、單調(diào)性(Monotonicity):?jiǎn)握{(diào)性是指如果已經(jīng)有一些內(nèi)容通過哈希分派到了相應(yīng)的緩沖中,又有新的緩沖加入到系統(tǒng)中。哈希的結(jié)果應(yīng)能夠保證原有已分配的內(nèi)容可以被映射到原有的或者新的緩沖中去,而不會(huì)被映射到舊的緩沖集合中的其他緩沖區(qū)。
3、分散性(Spread):在分布式環(huán)境中,終端有可能看不到所有的緩沖,而是只能看到其中的一部分。當(dāng)終端希望通過哈希過程將內(nèi)容映射到緩沖上時(shí),由于不同終端所見的緩沖范圍有可能不同,從而導(dǎo)致哈希的結(jié)果不一致,最終的結(jié)果是相同的內(nèi)容被不同的終端映射到不同的緩沖區(qū)中。這種情況顯然是應(yīng)該避免的,因?yàn)樗鼘?dǎo)致相同內(nèi)容被存儲(chǔ)到不同緩沖中去,降低了系統(tǒng)存儲(chǔ)的效率。分散性的定義就是上述情況發(fā)生的嚴(yán)重程度。好的哈希算法應(yīng)能夠盡量避免不一致的情況發(fā)生,也就是盡量降低分散性。
4、負(fù)載(Load):負(fù)載問題實(shí)際上是從另一個(gè)角度看待分散性問題。既然不同的終端可能將相同的內(nèi)容映射到不同的緩沖區(qū)中,那么對(duì)于一個(gè)特定的緩沖區(qū)而言,也可能被不同的用戶映射為不同的內(nèi)容。與分散性一樣,這種情況也是應(yīng)當(dāng)避免的,因此好的哈希算法應(yīng)能夠盡量降低緩沖的負(fù)荷。
審核編輯 黃昊宇
-
加密算法
+關(guān)注
關(guān)注
0文章
216瀏覽量
25556 -
區(qū)塊鏈
+關(guān)注
關(guān)注
111文章
15562瀏覽量
106210 -
usdt
+關(guān)注
關(guān)注
0文章
21瀏覽量
4339
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論