關注「區鏈數科」,讓你從入門到精通區塊鏈!
上一篇文章我們講解了「要了解區塊鏈一定要清楚區塊鏈技術的幾點技術原理!」
今天我們來講解區塊鏈中「Hash算法」的基本原理。
Hash--百科
哈希算法將任意長度的二進位值映射為較短的固定長度的二進位值,這個小的二進位值稱為哈希值。
哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨後的哈希都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,所以數據的哈希值可以檢驗數據的完整性。一般用於快速查找和加密算法。
簡單解釋:哈希(Hash)算法,即散列函數。它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
Hash算法具有的技術特徵:
1、單項不可逆
只能單項從數據內容本身快速計算出對應的Hash值,反之無法從Hash值推算出數據內容本身。
2、唯一性
不同的數據具有不同的Hash值。很難找到兩個Hash值一致,但數據本身不一致的數據。
3、不可預測性
數據內容對應的Hash值完全隨機,輕微的內容變化都會導致Hash值的完全不一致。
Hash原理
Hash算法是摘要算法的一種。
摘要算法的原理,即世界上沒有一片完全一樣的葉子,每一個事物都有自己獨一無二的特徵,我們提取某片葉子中獨一無二的特徵就是摘要。
按照這樣的原理,我們每個人也是一樣獨一無二的,也有自己的特點,那麼我們如何對人進行摘要呢?比如我們在籤合同的時候,只要留下雙方的指紋即可。這裡的指紋就是我們每個人身上獨有的特徵。
那麼,Hash算法中優勢如何提取的呢?
常見的Hash算法有:md5、sha1、sha256、sha512等,都是摘要算法(Message Digest)。
Hash算法就是可以將任意數據生成固定長度的16進位字符串。這裡的數據可以是文本、圖片、視頻等。
下面給大家進行演示一下:
1、進入下面工具頁面,按步驟操作。
2、輸入信息,點擊SHA1進行Hash加密,得到Hash值。
輸入的信息可以是任意的,經過加Hash加密計算後得到的是固定長度的16進位的字符串。
Hash算法的特點
1、只要數據一樣,那麼不管計算多少次都會獲得同一個字符串;
在工具內嘗試即可。
2、輸入的信息(明文)只要稍微改變,加密後的結果就會完全不一樣;
從下面的兩幅圖,對比就可以看出了。
3、過程不可逆,無法從加密後的字符串(密文)推推導出你輸入的信息(明文)。
比如,我們可以通過一個人得到一個人的指紋,但是這個過程是不可逆的,因為我們沒法從一個人的指紋推導出一個活生生的人。
因為這樣的特點,即使你得到了加密後的Hash值,也無法知道加密前的信息是什麼。
我們所有的密碼保存的都不是你要加密的信息(明文),而是加密後的字符串(密文),任何的Hash算法都是一樣原理。
這也很好的解釋了我們在忘記了某個平臺的登陸密碼後,在找回密碼時只能重新設置密碼而找不到你忘記的密碼,銀行卡忘記密碼也是如此。
這就是所有Hash算法的原理,如果你還有興趣,可以利用工具試試不同的Hash算法(md5、sha1、sha256、sha512等),看看後面得到Hash值有什麼不同,又有什麼特點呢?歡迎留言交流。
#區塊鏈#
關注「區鏈數科」,讓你從入門到精通區塊鏈!