hash雜湊演算法詳細解析(一)
本文詳細描述了hash演算法的通用模式,在這個基礎上對目前作為標準的幾種主要hash演算法進行了一些分析:md5,ripemd系列,sha系列,tiger以及剛加入到標準不久的whirlpool。給出了部分演算法的**。
1 hash定義
傳統hash函式的定義:乙個hash函式滿足下列條件:
我們目前所說的hash,已經不是傳統意義上的普通雜湊了。按照密碼學的定義,hash函式其實就是乙個單向函式。乙個函式f是單向的,如果f滿足:
簡單一點說,單向函式就是後向函式,只能計算以後的值,不能計算以前的值。
對稱加密函式也是單向函式。不同的是,這些單向函式具有陷門。陷門相當於後門一樣,知道陷門的人就能夠反轉單向函式,不知道的人就不能夠做到這點。正因為hash函式和加密函式具有一樣的性質,所以,它們的設計思路和方法是一致的。下面用乙個簡單的例子來說明它們之間的聯絡:
加密函式e的**為:
e(data,key) = data ^ md5(key);
對應的解密函式為:
d(data,key) = data ^ md5(key);
如果選擇了乙個好的加密模式,上面的這對簡單的加密/解密函式對也具有極高的安全度。
《密碼學基礎(英文版)》《現代密碼學理論與研究》
2 hash 演算法的一般模式
當前所提出來的hash演算法都具有乙個一般的模式。其主要計算步驟有3步:
有乙個例外的,就是whirlpool演算法不需要第3步。下面將對各種標準hash函式進行簡單分析,並給出其實現**。
Hash雜湊演算法詳細解析(二)
3 md5演算法 md5演算法定義在rfc 1321中,由ron rivest rsa公司 在1992年提出。然而很多學者已經找出了構造md5衝突的方法。這些人中包括中國山東大學的王教授和hans dobbertin。所以,單純使用md5的資訊認證模式變得不可靠了。但並不是說md5不能夠使用。md5...
Hash雜湊演算法
hash演算法 雜湊演算法將任意長度的二進位制值對映為較短的固定長度的二進位制值,短的二進位制值稱為雜湊值。雜湊值是一段資料唯一且極其緊湊的數值表示形式。如果雜湊一段明文而且哪怕只更改該段落的乙個字母,隨後的雜湊都將產生不同的值。要找到雜湊為同乙個值的兩個不同的輸入,在計算上是不可能的,所以資料的雜...
hash演算法(雜湊)
hash 演算法 什麼hash 演算法 簡單地來講就是將字串轉化為乙個整數。它一般應用於字串的場景中。現在我們來講hash演算法。hash 公式 hash i hash i 1 base str i a 1 mod base的值是隨機的,意思就是你自己可以去選擇任意的數,但是按照經驗值表明,一般ba...