我們在看眾多區塊鏈文章的時候,是不是常常看到「雜湊函數」和「雜湊值」或「哈希函數」和「哈希值」,其實他們在講同個東西,所以我習慣用英文來說,「Hash Function」和 「Hash Value」。
Hash Function = 雜湊函數 = 哈希函數
Hash Value = 雜湊值 = 哈希值
魔法盒 & 專屬標籤
我們先想像一下,有一個魔法盒,這個魔法盒會將每個丟進來的物品變成一個印著五個字的專屬標籤,隨著丟進來的物品不同,專屬標籤上的五個字也會不同。而這個專屬標籤是無法回推原本是什麼物品的。也就是說,一旦轉變成專屬標籤,你無從知道原本這個標籤對應到的是哪個物品。
這個魔法盒就是我們說的Hash Function。而印著五個字的專屬標籤就是Hash Value!(真正的雜湊值不會只有五個字呦^^)
Hash Function & Hash Value
「 Hash Function」就是可以將任何資料轉換成固定長度字串的方法。
「Hash Value」就是Hash Function產生的那串「固定長度的字串」。
從前面例子也不難發現,Hash Function有兩個特性:
1. 輸入不同,產生的Hash Value必不同
2. 無法回推原本內容
舉個例子,假設有三個句子"Paul 很帥"、"Cliff 很胖"、"Mary 給 Paul 10顆以太幣" 當作Hash Function的輸入值,Hash Function會將每個句子都變成一個長度相同的字串,這些相同長度的字串就是Hash Value了。這些Hash Value因為輸入字串不同,所以彼此也各不相同,且無法回推回原本的字串。
區塊鏈不可篡改性的幕後功臣
Hash Function & Hash Value主要是協助區塊鏈達到不可篡改的特性,那到底怎麼用Hash Function & Hash Value分辨資料是否被篡改呢?
尚未被篡改的資料放進Hash Function會產生一個Hash Value ,假設該Hash Value值為h1。當有人篡改資料後,送進Hash Function也會產生一個Hash Value,假設該Hash Value 值為h2。大家覺得h1和h2會相同嗎?
很顯然是不同的,因為Hash Function的特性1: 輸入不同,產生的Hash Value必不同,所以當有篡改區塊鏈中的資料,只要發現Hash Value與之前的不同,就可以知道資料被篡改了。
到這邊相信大家應該更加了解Hash Function和 Hash Value是什麼了~
喜歡我的文章可以到IG追蹤我們呦~