MD5概略說明

Home Home
引用 | 編輯 kenny_l_inux
2004-10-11 20:42
樓主
推文 x0
MD5 是什麼?

《轉貼自 石頭閒語》


簡單地說, MD5 是一種單向字串雜湊演算 (hashing) ,其可將你所給予的任何長度字串, 使用 MD5 雜湊演算法,得出一個長度為 128 位元 ( 16 個字元) 的計算結果, 以下以鍵值稱之。

舉例來說,你將 "ROCK" 這個字串,使用 MD5 演算的話,就會得到一個 128 位元的計算結果,以字串型式表示的話,則如同下行:

MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
用字串表示時,是把 128 位元的計算結果 (術語稱之為 "digest code") ,轉成十六進位碼形式的字串,此字串需要 32 個字元空間 (即 256 位元)。

MD5 的其他說明條列如下:

固定的字串內容必定會得出一個固定的鍵值,而非每次都算出不同的。
這是一個單向的雜湊演算,意味著,它雖可每次都將同樣的字串內容,算 出同樣的鍵值,但它無法從鍵值反推算出原本的字串內容。
不同字串內容所演算出來的鍵值,有可能相同,但根據統計,重覆的機率小於百萬分之一,以重覆率來說,是相當好的演算法。
演算速度快,對硬體的要求很低。
它可以演算任意長度的字串內容,而且能得出固定長度的鍵值。
就算字串內容只相差一個字,它也能算出完全不同的鍵值。
鍵值長達 128 位元,而且可接受任何長度的字串,就密碼的安全性來講,比過去常用的 DES 編碼法還好。 DES 編碼法,只能接受 8 個字元長度的字串,產生的鍵值只有 56 位元。
就最後兩項,舉個例子來驗證,如下:

MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
MD5 ("RACK") = 1ece4bad0efe8b897c6e7f8bd101759f
MD5 ("ROCKY") = 6cd910740cbbbbd0f55238a93fba157d
MD5 ("Rock'S saying") = 7dca0df0dfa7f76b652e53daa4852640
最後要提的是, MD5 演算法,是由 RSA Data Security, Inc 公司所提出的。

如何取得 MD5 函數庫
本人使用的 MD5 函數庫,是取自 RSA Data Security 公司網站上,提供公開下載的版本,它只提供 C 語言原始碼,不過不必擔心編譯的問題,根據我的測試,只要是 32位元的 C 語言編譯器,都可以順利編譯,也沒有作業系統平台的問題。

Ps. 我試過 gcc (win32, linux 及 freebsd) 及 borland c++ 5.0 (win32)

可以點取下列連結下載:

RSA Data Security, Inc.
我略做整理的原始碼
此外,在某些作業系統中,例如 Freebsd ,由於內定採用 MD5 作為帳號密碼的編碼演算法,因此在系統中已內建 MD5 函數庫,不須另外安裝。

當你取得 RSA 的 MD5 原始碼後,可以直接 make ,如果一切順利,就會得到一個名叫 md5 的工具,這個工具,可以用來演算指定的檔案內容或特定字串的鍵值。

這個工具非常好用,我略加說明使用方式。

如果你是要演算檔案內容的鍵值,只要在指令 md5 後,直接加上檔案名稱做為參數即可,例如: md5 abc.zip ..

訪客只能看到部份內容,免費 加入會員



獻花 x1
引用 | 編輯 codeboy
2004-10-11 22:27
1樓
  
很好的說明喔...馬上學起來~ 表情

獻花 x0
引用 | 編輯 t2416
2004-10-15 21:34
2樓
  
說的還真深
看一下不懂
不過會使用就好了
感謝提供

獻花 x0
引用 | 編輯 wang
2004-10-15 23:55
3樓
  
不好意思,新手請教各位大大一個簡單的問題,
那有沒有windows下可以使用的程式,
或者各位大大常用來檢查MD5的小程式。
謝謝!

獻花 x0
引用 | 編輯 小謝
2004-10-20 02:18
4樓
  
請問哪位大大
願意提供MD5校驗程式
因為小弟不是很董這部分
無法做出此程式
請會的大大提供一下謝謝

獻花 x0
引用 | 編輯 lylinken
2004-10-20 03:32
5樓
  
ㄎㄎ
教導ㄉ很詳盡
多謝ㄋ分享及指導
表情 表情 表情 表情

獻花 x0
引用 | 編輯 hlc099
2004-10-30 18:44
6樓
  
真是感謝大大教學,受益良多

獻花 x1
引用 | 編輯 無我
2004-12-23 22:06
7樓
  
看了半天...說實在還不是很懂..不過..至少有些概念了...

獻花 x0
引用 | 編輯 rickysteed
2004-12-27 01:40
8樓
  
真是身傲 看來需要好幾天的時間 才能消化完畢 感謝 你的細心講解 讓我又多學到一點

獻花 x0
引用 | 編輯 hughman
2004-12-27 04:04
9樓
  
感謝分享這麼詳細的說明耶...又學到了好東西了.感謝喔 表情

獻花 x0
引用 | 編輯 mnbmnb5266
2010-05-09 23:37
10樓
  
谢谢大大,我会好好看看的

獻花 x0