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