算法就是為了達成某一目標而進行的一系列操作步驟。從原料到成品,中間的加工過程就叫作算法。一個算法往往是由不同的操作步驟按照一定順序或規則組織起來而形成的。
「加一算法」可以稱得上是世界上最簡單的算法。任何數字通過這個算法後都被加一。
我們要講的哈希算法也是這樣,原始數據經過哈希算法加工以後得到的數據就叫作哈希值(Hash Value)。哈希算法並不是一個算法,而是一大類算法的統稱。由於哈希算法的技術細節已經超綱,我們在這裡不討論它的原理,只介紹這種算法的性質和應用。
哈希算法種類很多,但是它們都具有如下四大性質:
哈希算法性質一:等長性
不管輸入的數據是長是短,算法得出的哈希值都具有相同的長度。哈希值往往很短,通常只有一兩百個字節,佔用的存儲空間很小。
哈希算法性質二:單向性
由數據得出哈希值非常容易,但是從哈希值推導出原始數據是不可能的,即使在知道哈希算法細節的情況下也不可能。這一特性對於確保區塊鏈的安全性至關重要。
哈希算法性質三:無序性
就算原始數據僅僅改變一個字節,它的哈希值也會變得面目全非,完全沒規律。當然,現實中的哈希值不會是任何有含義的文字,往往是一串隨機字符。
哈希算法性質四:一一對應性
同一個原始數據用同樣的哈希算法,永遠得到同樣的哈希值,一個哈希值只能有唯一的數據值與其相對應。
本文來源: 金色財經 / 作者:張譯文