1.5 常用的單向雜湊函式
單向雜湊函式 ------- 獲取訊息的指紋在刑事偵查中,偵查員會用到指紋。通過將犯罪現場採集的指紋與指紋庫比對,或與嫌疑人的指紋進行比對,就能夠知道誰與案件有關聯
在計算機中,有時候也會用到"指紋"。當需要比較兩條訊息是否一致時,通常不必對訊息內容比較,直接比較它們的"指紋"就行。
單向雜湊函式,有乙個輸入和乙個輸出,其中輸入稱為訊息(message),輸出稱為雜湊值(hash value)。單向雜湊函式可以根據訊息的內容計算出雜湊值,而雜湊值就可以被用來檢查訊息的完整性。 簡單說就是把任意長度的內容轉換成固定長度的輸出串,且通過輸出串難以還原 原始內容
這裡的訊息不一定是人能看懂的文字,可以是或者聲音檔案。單向雜湊函式不需要知道訊息實際代表的含義。無論任何訊息,單向雜湊函式都會將它作為單純的位元序列來處理。即根據位元序列計算出雜湊值雜湊值的長度和訊息的長度無關。無論訊息多大,單向雜湊函式都會計算出固定長度的雜湊值。以sha-1單向雜湊函式為例,它計算出的雜湊值的長度永遠都是160位元(20位元組)。
單向雜湊函式相關的術語,有很多變體,不同參考資料中所使用的術語也不同。
單向雜湊函式也被稱為訊息摘要函式(message digest function) 、雜湊函式或者雜湊函式
輸入單向雜湊函式的訊息也成為原像(pre-image)。
單向雜湊函式的輸出值也稱為訊息摘要(message digest)護或者指紋(fingerprint)。
完整性也成為一致性。
通過使用單向雜湊函式,即便是確認幾百mb大小的檔案完整性,也只要對比很小的雜湊值就可以了。通常將單向雜湊函式擁有以下特性。
根據任意長度的訊息計算出固定長度的雜湊值
首先,單向雜湊值的輸入必須能夠是任意長度的訊息。能夠快速計算出雜湊值無論輸入多長的訊息,單向雜湊函式必須能夠生成很短的雜湊值。
計算雜湊值所花費的時間必須要短。訊息不同雜湊值也不同
為了能夠確認完整性,訊息中哪怕只有1位元的改變,也必須有很高概率產生不同的雜湊值。兩個不同的訊息產生同乙個雜湊值的情況被稱為碰撞(collsion)。
難以發生碰撞的性質稱為抗碰撞性。密碼技術中所使用的單向雜湊函式,都要具備抗碰撞性。
具備單向性
單向雜湊函式必須具備單向性(one-way)。 單向性指的是無法通過雜湊值反算出訊息的性質。根據訊息計算出雜湊值可以很容易,但計算路徑無法反推。正如同將玻璃粉碎很容易,卻無法將碎片還原成原先的玻璃。估計訊息計算出雜湊值很容易,但根據雜湊值卻無法逆推算出訊息。
單向雜湊函式並不是一種加密,因此無法通過解密將雜湊值還原為原阿里的訊息。
為了減輕伺服器壓力,很多軟體都會借助多個**(映象站點)發布軟體,在這種情況下,單向雜湊函式就會在檢測軟體是否被篡改方法發揮重要作用。
使用單向雜湊函式可以構造訊息認證碼
訊息認證碼是將"傳送者和接收者之間的共享金鑰"和"訊息",進行混合計算後得到的雜湊值。使用訊息認證碼可以檢測並防止通訊過程中的錯誤,篡改以及偽裝。
訊息認證碼在ssl/tls中也有使用
在進行數字簽名時會使用單向雜湊函式。
數字簽名是現實社會中的簽名(sign)和蓋章這樣的行為在電腦世界的實現。數字簽名的過程非常耗時,因此一般不會對整個訊息內容直接施加數字簽名,而是先通過單向雜湊函式計算出訊息的雜湊值,然後在對這個雜湊值施加數字簽名。
使用單向雜湊函式可以構造偽隨機數生成器。
密碼技術中所使用的隨機數需要具備"事實上不可能根據過去的隨機數列**未來的隨機數列"這樣的性質。為了保證不可**性,可以利用單向雜湊函式的單向性。
使用單向雜湊函式可以構造一次性口令(one-time password)
一次性口令經常被用於伺服器對客戶端的合法性認證。在這種方式中,通過使用單向雜湊函式可以保證口令在通訊鏈路上傳送一次(one-time),因此即使竊聽者竊取了口令,也無法使用。
md4 md5 sha1 sha-224 sha-256 sha-384 sha-512
演算法位元數
位元組數md4
128bit
16byte
md5128bit
16byte
sha-1
160bit
20byte
sha-224
224bit
28byte
sha-256
256bit
32byte
sha-384
384bit
48byte
sha-512
512bit
64byte
單向雜湊函式,HASH演算法
md2 md4 message digest algorithm,影響了md5,sha 1等演算法 md5 已被攻破,美國已經不推薦使用。md6 在改進中,因速度問題沒有被sha 3採用。sha 0 被淘汰 sha 1 secure hash algorithm 發現sha 1使用最廣泛,但理論上可...
單向雜湊函式
在介紹單向雜湊函式之前,我們先了解一下什麼情況下需要使用到單向雜湊函式。單向雜湊函式有乙個輸入和輸出。輸入稱為訊息,輸出稱為雜湊值。雜湊值的長度跟訊息的長度無關,不論多少大小的長度的訊息,都會計算出固定長度的雜湊值。單向雜湊函式具有下面幾個特性 能夠根據任意長度的訊息計算出固定長度的雜湊值。計算速度...
單向雜湊函式
在介紹單向雜湊函式之前,我們先了解一下什麼情況下需要使用到單向雜湊函式。單向雜湊函式有乙個輸入和輸出。輸入稱為訊息,輸出稱為雜湊值。雜湊值的長度跟訊息的長度無關,不論多少大小的長度的訊息,都會計算出固定長度的雜湊值。單向雜湊函式具有下面幾個特性 能夠根據任意長度的訊息計算出固定長度的雜湊值。計算速度...