引用 | 編輯
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
|
引用 | 編輯
wang
2004-10-15 23:55 |
3樓
▲ ▼ |
不好意思,新手請教各位大大一個簡單的問題,
那有沒有windows下可以使用的程式, 或者各位大大常用來檢查MD5的小程式。 謝謝! x0 |
引用 | 編輯
rickysteed
2004-12-27 01:40 |
8樓
▲ ▼ |
真是身傲 看來需要好幾天的時間 才能消化完畢 感謝 你的細心講解 讓我又多學到一點
x0 |
引用 | 編輯
mnbmnb5266
2010-05-09 23:37 |
10樓
▲ |
谢谢大大,我会好好看看的
x0 |