2008年12月8日 星期一

十一月心得筆記

什麼是MD5?

MD5 Message-Digest Algorithm 5,用於確保資訊傳輸完整一致。

為電腦廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法)就是將資料(如漢字)運算為另一固定長度值是雜湊演算法的基礎原理,MD5的前身有MD2MD3MD4


總之就是使用者可將任意長度的資料,以一種單向字串雜湊演算 (hashing) [MD5雜湊演算法運算],得到一組固定長度為128位元( 16 個字元)計算結果,而以下則「鍵值」稱之。


譬如,你將"ROCK"輸入MD5,則會得到一個128為元的計算結果,並以字串方式表式。

EX: [("ROCK") = afeb717aa2a101f7f64840e0be38c171 ](因為用字串表示要把128位元的計算結果轉換成十六進位碼形式的字串,所以此字串需要32 個字元空間。



採用該方法以作為確認碼運算法則之原因如下──

1.不同的資料經由MD5雜湊演算法計算所得到的結果有可能相同,但是根據統計顯示,重覆的機率低於百萬分之一

2.如前面說的MD5為一個單向雜湊演算法,亦即不易以逆向運算得到原始資料,例如:要計算字串vote123的MD5結果很簡單,但是要將MD5計算後的結果逆向運算得到vote123卻相當困難。

【EX.】 
計算 X = MD5("vote1234") = 8339e38c61175dbd07846ad70dc226b2 非常簡單
知道 X 逆向運算得到 vote1234卻非常困難

演算法
演算法是指完成一個任務所需要的具體步驟和方法

可以說是給「定初始狀態」或「輸入資料」,經過電腦程式的有限次運算,能夠得出所要求或期望的終止狀態或輸出資料。

演算法常常含有重複的步驟和一些比較或邏輯判斷。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。

其實演算法是電腦處理資訊的本質,因為電腦程式本質上就是一個演算法來告訴電腦確切的步驟來執行指定的任務,如計算學生的成績或是印報告等等指令。 一般地,當演算法在處理資訊時,會從輸入裝置或資料的存儲位址讀取資料,把結果寫入輸出裝置或某個存儲位址供以後再叫用。


MD5演算法以16個32位元子分組即512位分組來提供資料雜湊,經過程式流程,生成四個32位元資料,最後聯合起來成為一個128位散列。(一般128位的MD5散列被表示為32位元十六進位數位。)基本方式為,求余、取余、調整長度、與連結變數進行迴圈運算,並得出結果。



參考資料:



沒有留言:

張貼留言