MD5演算法描述的C#描述程式

來源:互聯網
上載者:User

MD5演算法描述

當我要寫一個MD5演算法的程式時,發現中英文的語言描述都有一些不確切的地方,某些個細節講得不清楚,或者說很費解。最後不得不拿出C語言的來源程式來調試,這對於理解演算法是很不利的。於是就總結了一下我摸索到的一些要點。

1.來曆

MD5的全稱是message-digest algorithm 5(資訊-摘要演算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來,經md2、md3和md4發展而來。 http://www.ietf.org/rfc/rfc1321.txt ,是一份最權威的文檔,

由ronald l. rivest在1992年8月向ieft提交。

2.用途

MD5的作用是對一段資訊(message)產生資訊摘要(message-digest),該摘要對該資訊具有唯一性,可以作為數位簽章。用於驗證檔案的有效性(是否有丟失或損壞的資料),對使用者密碼的加密,在雜湊函數中計算散列值。

3.特點

輸入一個任意長度的位元組串,產生一個128位的整數。由於演算法的某些無法復原特徵,在加密應用上有較好的安全性。並且,MD5演算法的使用不需要支付任何著作權費用。

4.說明

唯一性和無法復原性都不是絕對的,從理論上分析是一種多對一的關係,但兩個不同的資訊產生相同摘要的機率很小。無法復原是指從輸出反推輸入所需的運算量和計算時間太大,使用窮搜字典的方法又需要太多的儲存空間。

5.演算法描述

演算法輸入是一個位元組串,每個位元組是8個bit.演算法的執行分為以下幾個步驟:

第一步,補位:

MD5演算法先對輸入的資料進行補位,使得資料的長度(以byte為單位)對64求餘的結果是56。即資料擴充至LEN=K*64+56個位元組,K為整數。

補位方法:補一個1,然後補0至滿足上述要求。相當於補一個0x80的位元組,再補值為0的位元組。這一步裡總共補充的位元組數為0~63個。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.