圖片來源 - Bucket(桶):雜湊表儲存資料的位置,每一個位置具有唯一識別索引。 - Slot(槽): 每一個Bucket裡面都會存放不同的資料,而假設一筆資料由兩個欄位組成,每一個欄位就是一個Slot(槽)。 - Hash Function(雜湊演算法):計算出雜湊值的一套數學公式,諸如: MD5、SHA…皆是著名的雜湊演算法。 上一篇我們介紹了「 【開發智能合約 - 密碼學系列】編碼(Encode)、雜湊(Hash)、加密(Encrypt)傻傻分不清楚? 」, 相信大家對於編碼、雜湊、加密已經具備基礎的知識了, 那這次就來深入聊聊雜湊(Hash)的內容、相關的演算法、應用場景…。 我們在聊區塊鏈的時候常常會聽到Hash、Hash Function、Hash…, 常常我們都認為Hash就是保障區塊鏈安全的重要算法, 但嚴格來說Hash並不是一一種加密算法, 而是一種資訊檢索, 透過演算法將內容取摘要之後產生的一串不可逆推的雜湊值,也就是這組「雜湊值」被允許公開流傳與網路上, 這也是為什麼我們常常在下載檔案的時候, 會看到MD5值的原因, 因為MD5也是雜湊的一種演算應用, 下載過後透過雜湊值的比對, 就可以確保檔案傳送的過程是沒有被「任意竄改」的, 因為一旦內容遭到竄改, 通常雜湊值的比對就會失敗, 假若不匹配, 我們就可以初步將該檔案判定為異常。 上面那段描述相信大家也看到了一個重點, 就是「不可竄改」的特性,因此也被呼應到區塊鏈的特性。 具有哪些特點? - 產生出來的雜湊值長度固定, 可以用於系統優化, 將大量資料取雜湊又不需要逆推資料的情境。 - 搜尋速度快, 基本上時間複雜度為O(1)。 - 難以偽造, 只要資料一改變, 雜湊值勢必截然不同。 如何運作? 1. 我們都知道計算機的運算基本單元皆為0與1, 因此第一步先將資料化為數值。 2. 接著透過Hash Function取餘數、平均法…等, 得出雜湊位址。 3. 接著在雜湊表的特定位址存放資料。 關於Hash Function 取餘數(Mod) 相除取餘數,Hash Function最基本的演算方式就是相除取餘數的方式,假設有5個Buckets,現有1個值為4的資料,則運算邏輯為: 5 % 4 = 1 中間平方法(Mid-Square) 公式主要為pow(N, 2)取中間幾位數, 舉...