hash(雜湊)本意是混雜、拼湊、重新表述。hash演算法又叫雜湊演算法、雜湊函式。它是一種單向密碼體制,即乙個從明文到密文的不可逆的對映,只有加密過程,沒有解密過程。同時hash函式可以將任意長度的輸入得到固定長度的輸出。hash函式這種單向特徵和固定輸出資料長度的特徵使它可以生成訊息或者資料。
hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值. 也可以說,hash就是找到一種資料內容和資料存放位址之間的對映關係。
了解了hash基本定義,就不能不提到一些著名的hash演算法,md5 和 sha1 可以說是目前應用最廣泛的hash演算法,而它們都是以 md4 為基礎設計的。那麼他們都是什麼意思呢?
這裡簡單說一下:
1) md4
md4(rfc 1320)是 mit 的 ronald l. rivest 在 1990 年設計的,md 是 message digest 的縮寫。它適用在32位字長的處理器上用高速軟體實現--它是基於 32 位運算元的位操作來實現的。
2) md5
md5(rfc 1321)是 rivest 於2023年對md4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 md4 相同。md5比md4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好。目前,由於計算機運算水平的發展,可以通過大型計算機的運算採用暴力破解方式在秒級內破解md5。
3) sha1 及其他
sha1是由nist nsa設計為同dsa一起使用的,它對長度小於264的輸入,產生長度為160bit的雜湊值,因此抗窮舉(brute-force)性更好。sha-1 設計時基於和md4相同原理,並且模仿了該演算法。
hash演算法在資訊保安方面的應用主要體現在以下的3個方面:
1) 檔案校驗
我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。
md5 hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。
2) 數字簽名
hash 演算法也是現代密碼體系中的乙個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了乙個重要的角色。 對 hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3) 鑑權協議
如下的鑑權協議又被稱作"挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
以上就是一些關於hash以及其相關的一些基本預備知識。
秒懂Hash演算法(一) 什麼是Hash
hash函式 在一般的線性表 樹結構中,資料的儲存位置是隨機的,不像陣列可以通過索引能一步查詢到目標元素。為了能快速地在沒有索引之類的結構中找到目標元素,需要為儲存位址和值之間做一種對映關係h key 這個h就是雜湊函式,用公式表示 h key addr h 雜湊函式 key 關鍵字,用來唯一區分物...
什麼是Hash加密
hash簡單點講就是把任意一段資料經過某種演算法生成一段唯一的固定長度的資料。也叫做摘要。為了確保資料a免受意外或者故意 惡意 的修改,往往用這段資料a產生乙個hash資料一起傳送出去,接收 hash,一般翻譯做 雜湊 也有直接音譯為 雜湊 的,就是把任意長度的輸入 又叫做預對映,pre image...
到底什麼是hash?它起什麼作用?
從emule誕生到現在也已經有了兩年左右時間了,隨著emule的普及,喜歡他的人也越來越多,但是由於emule對技術相應有乙個門檻,不像bt那麼容易上手,所以很多朋友很長時間以來一直都有這樣或那樣的疑問,今天是週末我也獻獻醜,寫一篇關於hash的文章。大家天天都在使用emule,hash這個詞是在e...