hash演算法我們可能早就聽過,不僅僅應用在密碼學領域。由於hash演算法所體現的思想十分的滿足我們的需求,比如可以把乙個十分複雜的東西對映到另外乙個較為簡單的地方,所以很多地方都有應用。
hash(雜湊或雜湊,hash algorithm)演算法是資訊科技領域非常基礎也非常重要的技術。它能任意長度的二進位制值(明文)對映為較短的固定長度的二進位制值(hash值),並且不同的明文很難對映為相同的hash值。
hash演算法的核心思想:基於內容進行編址或者命名。
乙個優秀的 hash 演算法,將能實現:
正向快速:給定明文和hash演算法,在有限時間和有限資源內能計算出hash值。
逆向困難:給定(若干)hash值,在有限時間內很難(基本不可能)逆推出明文。
輸入敏感:原始輸入資訊修改一點資訊,產生的hash值看起來應該都有很大不同。
衝突避免:很難找到兩段內容不同的明文,使得它們的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 於2023年對 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 已被證明不具"強抗碰撞性"。
一般而言,hash需要較強的算力資源,所以算力很可能成為hash演算法的瓶頸。一般選擇進行hash演算法的cpu需要較高的主頻。
數字摘要的意思是對內容進行hash運算,把運算結果作為唯一的值來代表之前的值。
根據前面所學習的內容,我們可以根據前面所學的hash函式的特點之一(抗碰撞性)來解決確保內容沒有被篡改的問題。
今天我們學習了hash演算法的概念,特點,常用的hash演算法,hash演算法的特點以及hash演算法的應用(數字摘要)等內容。對其有了乙個基本的了解。
區塊鏈技術 密碼學
1 對稱加密 用相同金鑰對原文進行加密和解密 加密過程 金鑰 原文 密文 解密過程 密文 金鑰 原文 缺點 無法確保金鑰被安全傳遞 2 非對稱加密 公鑰 私鑰,ras演算法 公鑰用於加密,私鑰用於解密。私鑰簽名,公鑰解簽名。公鑰由私鑰生產,私鑰可以推導出公鑰 從公鑰無法推導出私鑰 優點 解決了金鑰傳...
區塊鏈與密碼學
在學完大概了密碼學的知識,其實也只是看完了dan boneh的那本密碼學的書,現在開始密碼學與區塊鏈的結合學習,因為我自己是主要針對密碼學和區塊鏈的,但是去學習密碼學在區塊鏈上面的一些應用,就可以使得對密碼學有更深刻的了解,因為密碼學擁有很龐大的體系,所以我只能這樣去慢慢摸索。因為我有很多學習的內容...
區塊鏈密碼學之對稱加密
對稱加密,顧名思義就是公鑰和私鑰都是同乙個,只有一把金鑰,那麼金鑰的共享就需要特別注意,容易洩露。但是由於它的加密效率高 速度快 占用空間小 主要用在大量資料的加密,往往需要提前分發金鑰。對稱密碼從實現上可以分為兩種 分組密碼和序列密碼。前者將明文切分為定長資料塊作為基本加密單位,應用最為廣泛。後者...