程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中簡單調用MD5方法以及MD5簡介

C#中簡單調用MD5方法以及MD5簡介

編輯:C#入門知識

MD5簡介: 
         MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。MD5將任意長度的“字節串”變換成一個128bit的大整數,並且它是一個不可逆的字符串變換算法。換句話說就是,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串,從數學原理上說,是因為原始的字符串有無窮多個,這有點象不存在反函數的數學函數。 

MD5算法: 

第一步:增加填充 
        增加padding使得數據長度(bit為單位)模512為448。如果數據長度正好是模512為448,增加512個填充bit,也就是說填充的個數為1-512。第一個bit為1,其余全部為0。 
第二步:補足長度 
        將數據長度轉換為64bit的數值,如果長度超過64bit所能表示的數據長度的范圍,值保留最後64bit,增加到前面填充的數據後面,使得最後的數據為512bit的整數倍。也就是32bit的16倍的整數倍。在RFC1321中,32bit稱為一個word。 
第三步:初始化變量: 
用到4個變量,分別為A、B、C、D,均為32bit長。初始化為: 
A: 01 23 45 67 
B: 89 ab cd ef 
C: fe dc ba 98 
D: 76 54 32 10 
第四步:數據處理: 
首先定義4個輔助函數: 
F(X,Y,Z) = XY v not(X) Z 
G(X,Y,Z) = XZ v Y not(Z) 
H(X,Y,Z) = X xor Y xor Z 
I(X,Y,Z) = Y xor (X v not(Z)) 
其中:XY表示按位與,X v Y表示按位或,not(X)表示按位取反。xor表示按位異或。 
函數中的X、Y、Z均為32bit。定義一個需要用到的數組:T(i),i取值1-64,T(i)等於abs(sin(i))的4294967296倍的整數部分,i為弧度。 
假設前三步處理後的數據長度為32*16*Nbit 
第五步:輸出: 
最後得到的ABCD為輸出結果,共128bit。A為低位,D為高位。 

         MD5在ASP.net(C#)中的實現: 

C#代碼  收藏代碼
  1. //欲進行md5加密的字符串  
  2.             string test = "123abc";  
  3.              
  4.             //獲取加密服務  
  5.             System.Security.Cryptography.MD5CryptoServiceProvider md5CSP = new System.Security.Cryptography.MD5CryptoServiceProvider();  
  6.          
  7.             //獲取要加密的字段,並轉化為Byte[]數組  
  8.             byte[] testEncrypt = System.Text.Encoding.Unicode.GetBytes(test);  
  9.   
  10.             //加密Byte[]數組  
  11.             byte[] resultEncrypt = md5CSP.ComputeHash(testEncrypt);  
  12.   
  13.             //將加密後的數組轉化為字段(普通加密)  
  14.             string testResult = System.Text.Encoding.Unicode.GetString(resultEncrypt);  
  15.   
  16.             //作為密碼方式加密   
  17.             string Encrypt PWD = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(test, "MD5");  



只需最後一段語句即可進行MD5加密,無需引入任何包. 

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