程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> MD5算法描述的C#描述程序(1)

MD5算法描述的C#描述程序(1)

編輯:關於C語言

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個。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved