Just a Computer Graphics Studio & My Life

MD5 雜湊演算法

MD5是一種單向字串雜湊演算 (Hashing),它可以將我們所給予的任何長度字串,利用MD5雜湊演算法,獲得一個長度為128 位元 (32 個十六進制數字)的計算結果。

例如:HappyMan的MD5是e51d97746fe2a5d83cf938d581e57389,共32個字元。

MD5 HappyMan

MD5無法互轉。

我台大數學修過密碼學的朋友,這麼生活化地描述:

在網際網路傳遞檔案的同時,必須確定檔案資料的正確性且未被竄改。其中最常被使用的技術即是MD5雜湊演算法。

MD5雜湊演算法可以將任意長度的資料經由運算之後,得到一組固定長度為128 位元 (32 個十六進制數字)的結果,我們可以使用這個結果當作檢查碼 (Checksum)

當我們下載完檔案後,可利用MD5檢查程式將下載好的檔案再產生檢查碼,接著比對產生出來的檢查碼和網頁公告的檢查碼是否一致,便可得知經過傳遞之後的檔案是否與原檔案完全相同。

以下是維基百科的描述:

介紹

MD5全名為Message-Digest Algorithm 5(訊息摘要演算法第五版)的簡稱,是當前電腦領域用於確保訊息傳輸完整一致而廣泛使用的雜湊演算法之一(又譯雜湊演算法、摘要演算法等),主流程式語言普遍已有MD5的實作。

將資料(如一段文字)運算變為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。MD5由MD4、MD3、MD2改進而來,主要增強演算法複雜度和不可逆性。

應用

MD5已經廣泛使用在為檔案傳輸提供一定的可靠性方面。例如,伺服器預先提供一個MD5檢查碼,使用者下載完檔案以後,用MD5演算法計算下載檔案的MD5檢查碼,然後透過檢查這兩個檢查碼是否一致,就能判斷下載的檔案是否出錯。

MD5亦有應用於部份網上賭場以保證賭博的公平性,原理是系統先在玩家下注前已生成該局的結果,將該結果的字串配合一組隨機字串利用MD5 加密,將該加密字串於玩家下注前便顯示給玩家,再在結果開出後將未加密的字串顯示給玩家,玩家便可利用MD5工具加密驗證該字串是否吻合。

例子:在玩家下注骰寶前,賭場便先決定該局結果,假設生成的隨機結果為4、5、 6大,賭場便會先利用MD5 加密「4, 5, 6」此字串並於玩家下注前告訴玩家;由於賭場是無法預計玩家會下什麼注,所以便能確保賭場不能作弊;當玩家下注完畢後,賭場便告訴玩家該原始字串,即「4, 5, 6」,玩家便可利用MD5工具加密該字串是否與下注前的加密字串吻合。

該字串一般會加上一組隨機字串 (Random string),以防止玩家利用碰撞 (Collision) 解密字串,但如使用超級電腦利用碰撞亦有可能從加上隨機字串的加密字串中取得遊戲結果。隨機字串的長度與碰撞的次數成正比關聯,一般網上賭場使用的隨機字串是長於20字,有些網上賭場的隨機字串更長達500字,以增加解密難度。

參考:WiKi – MD5MD5 – Online generator md5 hashMD5 的應用

廣告

Comments on: "MD5 雜湊演算法" (3)

  1. MD5有網站嗎?

    按讚數

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: