區塊鏈中的密碼學之hash算法(一)

前言

Hash算法我們可能早就聽過,不僅僅應用在密碼學領域。由於hash算法所體現的思想十分的滿足我們的需求,比如可以把一個十分複雜的東西映射到另外一個較爲簡單的地方,所以很多地方都有應用。

1. 什麼是hash算法?

Hash(哈希或散列,Hash Algorithm)算法是信息技術領域非常基礎也非常重要的技術。它能任意長度的二進制值(明文)映射爲較短的固定長度的二進制值(Hash值),並且不同的明文很難映射爲相同的Hash值。

Hash算法的核心思想:基於內容進行編址或者命名。

2. Hash算法的特點

一個優秀的 hash 算法,將能實現:

正向快速:給定明文和hash算法,在有限時間和有限資源內能計算出hash值。

逆向困難:給定(若干)hash值,在有限時間內很難(基本不可能)逆推出明文。

輸入敏感:原始輸入信息修改一點信息,產生的hash值看起來應該都有很大不同。

衝突避免:很難找到兩段內容不同的明文,使得它們的hash值一致(發生衝突)。

如果給定一個明文前提下,難以找到碰撞的另一個明文,稱爲“弱抗碰撞性”;如果難以找到任意兩個明文,發生碰撞,則稱算法具有“強抗碰撞性”。

3. 流行的hash算法

目前流行的 Hash 算法包括 MD5、SHA-1 和 SHA-2。

MD是Message Digest的縮寫。

MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年設計的,MD 是 Message Digest 的縮寫。其輸出爲 128 位。MD4 已證明不夠安全。

MD5(RFC 1321)是 Rivest 於1991年對 MD4 的改進版本。它對輸入仍以 512 位分組,其輸出是 128 位。MD5 比 MD4 複雜,並且計算速度要慢一點,更安全一些。MD5 已被證明不具備"強抗碰撞性"(強抗碰撞性參考上面的內容)。

SHA (Secure Hash Algorithm)是一個 Hash 函數族,由 NIST(National Institute of Standards and Technology)於 1993 年發佈第一個算法。目前知名的 SHA-1 在 1995 年面世,它的輸出爲長度 160 位的 hash 值,因此抗窮舉性更好。SHA-1 設計時基於和 MD4 相同原理,並且模仿了該算法。SHA-1 已被證明不具"強抗碰撞性"。

4. hash算法的缺點

一般而言,Hash需要較強的算力資源,所以算力很可能成爲hash算法的瓶頸。一般選擇進行hash算法的CPU需要較高的主頻。

5. Hash算法與數字摘要之間的關係

數字摘要的意思是對內容進行Hash運算,把運算結果作爲唯一的值來代表之前的值。

根據前面所學習的內容,我們可以根據前面所學的hash函數的特點之一(抗碰撞性)來解決確保內容沒有被篡改的問題。

數字摘要是Hash算法的一個很重要的使用場景。當我們在網絡上下載東西的時候,很可能被不法分子篡改,這個時候我們就可以對下載的資源進行數字摘要,這樣當我們下載之後,通過把下載的文件進行Hash計算,把結果與數字摘要進行對比,就可以知道文件是否被篡改。

6. 總結

今天我們學習了Hash算法的概念,特點,常用的Hash算法,Hash算法的特點以及Hash算法的應用(數字摘要)等內容。對其有了一個基本的瞭解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章