国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

C#中使用MD5加密的方法

2019-11-06 06:39:57
字體:
供稿:網(wǎng)友

---------------------第1組---------------------

【方法一】

首先,先簡單介紹一下md5

MD5的全稱是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發(fā)出來, 經(jīng)md2、md3和md4發(fā)展而來。

MD5具有很好的安全性(因為它具有不可逆的特征,加過密的密文經(jīng)過解密后和加密前的東東相同的可能性極小)

引用

[c-sharp] view plain copyusing System.Security.Cryptography;  using System.Text;  

具體代碼如下(寫在按鈕的Click事件里):

[c-sharp] view plain copybyte[] result = Encoding.Default.GetBytes(this.tbPass.Text.Trim());    //tbPass為輸入密碼的文本框  MD5 md5 = new MD5CryptoServicePRovider();  byte[] output = md5.ComputeHash(result);  this.tbMd5pass.Text = BitConverter.ToString(output).Replace("-","");  //tbMd5pass為輸出加密文本的文本框  

 

             【方法二】

[c-sharp] view plain copyC# md5加密(上)  string a; //加密前數(shù)據(jù)  string b; //加密后數(shù)據(jù)  b=System.Web.Security.FormsAuthentication.HashPassWordForStoringInConfigFile(a,"MD5")    using   System;  using   System.Security.Cryptography;    方法2    public   static   string   GetMD5(string   myString)     {  MD5   md5     =   new   MD5CryptoServiceProvider();  byte[]   fromData   =   System.Text.Encoding.Unicode.GetBytes(myString);  byte[]   targetData   =   md5.ComputeHash(fromData);  string   byte2String   =   null;    for   (int   i=0;   i<targetData.Length;   i++)     {  byte2String   +=   targetData[i].ToString("x");  }    return   byte2String;  }     using   System.Security.Cryptography;      ///   <summary>  ///   給一個字符串進行MD5加密  ///   </summary>  ///   <param   name="strText">待加密字符串</param>  ///   <returns>加密后的字符串</returns>  public   static   string   MD5Encrypt(string   strText)  {     MD5   md5   =   new   MD5CryptoServiceProvider();  byte[]   result   =   md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strText));  return   System.Text.Encoding.Default.GetString(result);  }   

C# MD5加密 

[c-sharp] view plain copyusing System.Security.Cryptography;      private void btnOK_Click(object sender, System.EventArgs e)  {     string strConn = "server=192.168.0.51;database=chengheng;User id=sa; password=123";     if(texName.Text.Trim()=="")     {      this.RegisterStartupScrjavascript" class='replace_word' title="Javascript知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>JavaScript</a>'><!--  alert('用戶名不能為空');document.all('texName').focus()  // --></mce:script>");      return;     }     else if(texPassword.Text.Trim()=="")     {      this.RegisterStartupScript("sfs","<mce:script language='javascript'><!--  alert('密碼不能為空');document.all('texPassword').focus()  // --></mce:script>");      return;     }     else     {      //將獲取的密碼加密與<a href="http://lib.csdn.net/base/MySQL" class='replace_word' title="MySQL知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>數(shù)據(jù)庫</a>中加了密的密碼相比較      byte[] by = md5.ComputeHash(utf.GetBytes(texPassword.Text.Trim()));      string resultPass = System.Text.UTF8Encoding.Unicode.GetString(by);      conn.ConnectionString=strConn;      SqlCommand comm = new SqlCommand();      string name = texName.Text.Trim().ToString();      comm.CommandText="select Ruser_pwd,Ruser_nm from Ruser where Accountno = @name";      comm.Parameters.Add("@name",SqlDbType.NVarChar,40);      comm.Parameters["@name"].Value=name;      try      {            conn.Open();       comm.Connection=conn;       SqlDataReader dr=comm.ExecuteReader();       if(dr.Read())       {        //用戶存在,對密碼進行檢查        if(dr.GetValue(0).Equals(resultPass))        {         string user_name=dr.GetValue(1).ToString();         string user_Accountno=texName.Text.Trim();         session["logon_name"]=user_name;         Session["logon_Accountno"]=user_Accountno;         //登錄成功,進行頁面導向          }        else        {         this.RegisterStartupScript("wp","<mce:script language='javascript'><!--  alert('密碼錯誤,請檢查。')  // --></mce:script>");        }               }       else       {        this.RegisterStartupScript("nu","<mce:script language=javascript><!--  alert('用戶名不存在,請檢查。')  // --></mce:script>");       }      }      catch(Exception exec)      {        this.RegisterStartupScript("wc","<mce:script language=javascript><!--  alert('網(wǎng)絡(luò)連接有異,請稍后重試。')  // --></mce:script>");      }       finally      {       conn.Close();      }     }  }  

                                      【方法三】一、C# MD5-16位加密實例,32位加密實例(兩種方法)

環(huán)境:vs.net2005/sql server2000/xp測試通過1.MD5 16位加密實例

[c-sharp] view plain copypublic string md5(string str,int code)    {      if(code==16) //16位MD5加密(取32位加密的9~25字符)     {         return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;     }      else//32位加密     {         return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();     }    }     

二、首先在界面中引入:using System.Web.Security;

假設(shè)密碼對話框名字password,對輸入的密碼加密后存入變量pwd中,語句如下:

 string pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, "MD5");

如果要錄入則錄入pwd,這樣數(shù)據(jù)庫實際的密碼為202*****等亂碼了。

如果登錄查詢則要:

select username,password from users where username='"+ UserName.Text +"' and password='"+ pwd +"'

因為MD5不能解密,只能把原始密碼加密后與數(shù)據(jù)庫中加密的密碼比較

三、C# MD5 加密方法 16位或32位

 

[c-sharp] view plain copypublic string md5(string str,int code)    {      if(code==16) //16位MD5加密(取32位加密的9~25字符)     {         return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;     }      else//32位加密     {         return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();     }    }   

    四、做一個網(wǎng)站時,必然涉及用戶登錄,用戶登錄必然涉及密碼,密碼必然涉及安全,安全必然涉及加密。加密現(xiàn)時最流行也是據(jù)說最安全的算法是MD5算法,MD5是一種不可逆的算法,也就是 明文經(jīng)過加密后,根據(jù)加密過的密文無法還原出明文來。目前有好多網(wǎng)站專搞MD5破密,百度上搜一下MD5就搜出一大堆了,今天早上無聊試了幾個破密網(wǎng)站,6位以內(nèi)純數(shù)字密碼的MD5密文可以還原出明文,長點的或帶字符的就不行了。他們是采用窮舉對比的,就是說把收錄到的明文和密文放到數(shù)據(jù)庫里,通過密文的對比來確定明文,畢竟收錄的數(shù)據(jù)有限,所以破解的密碼很有限。扯遠了,搞破密MD5需要大量的MONEY,因為要一個運算得超快的計算機和一個查找性能超好的數(shù)據(jù)庫和超大的數(shù)據(jù)庫收錄。但搞加密就比較簡單。以下是我用C#寫的一個MD5加密的方法,用到.NET中的方法, 通過MD5_APP.StringToMD5(string str, int i)可以直接調(diào)用:

[c-sharp] view plain copypublic class MD5_APP  {   public MD5_APP()   {          }        public static string StringToMD5(string str, int i)      {          //獲取要加密的字段,并轉(zhuǎn)化為Byte[]數(shù)組          byte[] data = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());          //建立加密服務(wù)          System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();          //加密Byte[]數(shù)組          byte[] result = md5.ComputeHash(data);          //將加密后的數(shù)組轉(zhuǎn)化為字段          if (i == 16 && str != string.Empty)          {              return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);          }          else if (i == 32 && str != string.Empty)          {              return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();          }          else          {              switch (i)              {                  case 16: return "000000000000000";                  case 32: return "000000000000000000000000000000";                  default: return "請確保調(diào)用函數(shù)時第二個參數(shù)為16或32";              }            }      }  

---------------------第2組----------------------

【一、使用標準庫加密】

[c-sharp] view plain copyusing System;  using System.Text;  using System.Security.Cryptography;    namespace Consoleapplication3  {      class Program      {          static void Main(string[] args)          {              string inStr;              inStr = "WONSOFT";              inStr += "/xa3/xac/xa1/xa3";              inStr += "fdjf,jkgfkl";              MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();              byte[] InBytes = Encoding.GetEncoding("GB2312").GetBytes(inStr);              byte[] OutBytes= md5.ComputeHash(InBytes);              string OutString = "";              for (int i = 0; i < OutBytes.Length; i++)              {                  OutString += OutBytes[i].ToString("x2");              }              Console.WriteLine(OutString);          }      }  }   

【二、asp.net專用加密方法】

[c-sharp] view plain copy// code 為加密位數(shù),16和32   public static string Md5(string str, int code)           {               //str = System.Web.HttpUtility.UrlEncode(str);               if (code == 16) //16位MD5加密(取32位加密的9~25字符)               {                   return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);               }               else//32位加密               {                   return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();               }   

【三、MSDN】

[c-sharp] view plain copy/// <summary>   /// MD5加密   /// </summary>   /// <param name="str"></param>   /// <returns></returns>   public static string Md5(string str)   {       // Create a new instance of the MD5CryptoServiceProvider object.       MD5 md5Hasher = MD5.Create();       // Convert the input string to a byte array and compute the hash.       byte[] data = md5Hasher.ComputeHash(Encoding.GetEncoding("UTF-8").GetBytes(str));      // return BitConverter.ToString(data);//可以直接使用這個方法      //  Create a new Stringbuilder to collect the bytes      //  and create a string.       StringBuilder sBuilder = new StringBuilder();       // Loop through each byte of the hashed data       // and format each one as a hexadecimal string.       for (int i = 0; i < data.Length; i++)       {           sBuilder.Append(data.ToString("x2"));       }       // Return the hexadecimal string.       return sBuilder.ToString();   }   }   

【四、使用淘寶API】

[c-sharp] view plain copy/// <summary>       /// MD5加密并輸出十六進制字符串       /// </summary>       /// <param name="str"></param>       /// <returns></returns>       public static string Md5Hex(string str)       {           string dest = "";           //實例化一個md5對像           MD5 md5 = MD5.Create();           // 加密后是一個字節(jié)類型的數(shù)組,這里要注意編碼UTF8/Unicode等的選擇            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));           // 通過使用循環(huán),將字節(jié)類型的數(shù)組轉(zhuǎn)換為字符串,此字符串是常規(guī)字符格式化所得           for (int i = 0; i < s.Length; i++)           {               // 將得到的字符串使用十六進制類型格式。格式后的字符是大寫的字母               if (s < 16)               {                   dest = dest + "0" + s.ToString("X");               }               else               {                   dest = dest + s.ToString("X");               }           }           return dest;       }   

【五、自己實現(xiàn)MD5類】

[c-sharp] view plain copyusing System;   using System.Text;   namespace Encrypter   {       /// <summary>       /// Summary description for MD5.       /// </summary>       public class MD5       {           const int BITS_TO_A_BYTE = 8;           const int BYTES_TO_A_WORD = 4;           const int BITS_TO_A_WORD = 32;           private static long[] m_lOnBits = new long[30 + 1];           private static long[] m_l2Power = new long[30 + 1];           private static long LShift(long lValue, long iShiftBits)           {               long LShift = 0;               if (iShiftBits == 0)               {                   LShift = lValue;                   return LShift;               }               else               {                   if (iShiftBits == 31)                   {                       if (Convert.ToBoolean(lValue & 1))                       {                           LShift = 0x80000000;                       }                       else                       {                           LShift = 0;                       }                       return LShift;                   }                   else                   {                       if (iShiftBits < 0 || iShiftBits > 31)                       {                           // Err.Raise 6;                       }                   }               }               if (Convert.ToBoolean((lValue & m_l2Power[31 - iShiftBits])))               {                   LShift = ((lValue & m_lOnBits[31 - (iShiftBits + 1)]) * m_l2Power[iShiftBits]) | 0x80000000;               }               else               {                   LShift = ((lValue & m_lOnBits[31 - iShiftBits]) * m_l2Power[iShiftBits]);               }               return LShift;           }           private static long RShift(long lValue, long iShiftBits)           {               long RShift = 0;               if (iShiftBits == 0)               {                   RShift = lValue;                   return RShift;               }               else               {                   if (iShiftBits == 31)                   {                       if (Convert.ToBoolean(lValue & 0x80000000))                       {                           RShift = 1;                       }                       else                       {                           RShift = 0;                       }                       return RShift;                   }                   else                   {                       if (iShiftBits < 0 || iShiftBits > 31)                       {                           // Err.Raise 6;                       }                   }               }               RShift = (lValue & 0x7FFFFFFE) / m_l2Power[iShiftBits];               if (Convert.ToBoolean((lValue & 0x80000000)))               {                   RShift = (RShift | (0x40000000 / m_l2Power[iShiftBits - 1]));               }               return RShift;           }           private static long RotateLeft(long lValue, long iShiftBits)           {               long RotateLeft = 0;               RotateLeft = LShift(lValue, iShiftBits) | RShift(lValue, (32 - iShiftBits));               return RotateLeft;           }           private static long AddUnsigned(long lX, long lY)           {               long AddUnsigned = 0;               long lX4 = 0;               long lY4 = 0;               long lX8 = 0;               long lY8 = 0;               long lResult = 0;               lX8 = lX & 0x80000000;               lY8 = lY & 0x80000000;               lX4 = lX & 0x40000000;               lY4 = lY & 0x40000000;               lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);               if (Convert.ToBoolean(lX4 & lY4))               {                   lResult = lResult ^ 0x80000000 ^ lX8 ^ lY8;               }               else if (Convert.ToBoolean(lX4 | lY4))               {                   if (Convert.ToBoolean(lResult & 0x40000000))                   {                       lResult = lResult ^ 0xC0000000 ^ lX8 ^ lY8;                   }                   else                   {                       lResult = lResult ^ 0x40000000 ^ lX8 ^ lY8;                   }               }               else               {                   lResult = lResult ^ lX8 ^ lY8;               }               AddUnsigned = lResult;               return AddUnsigned;           }           private static long md5_F(long x, long y, long z)           {               long md5_F = 0;               md5_F = (x & y) | ((~x) & z);               return md5_F;           }           private static long md5_G(long x, long y, long z)           {               long md5_G = 0;               md5_G = (x & z) | (y & (~z));               return md5_G;           }           private static long md5_H(long x, long y, long z)           {               long md5_H = 0;               md5_H = (x ^ y ^ z);               return md5_H;           }           private static long md5_I(long x, long y, long z)           {               long md5_I = 0;               md5_I = (y ^ (x | (~z)));               return md5_I;           }           private static void md5_FF(ref long a, long b, long c, long d, long x, long s, long ac)           {               a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac));               a = RotateLeft(a, s);               a = AddUnsigned(a, b);           }           private static void md5_GG(ref long a, long b, long c, long d, long x, long s, long ac)           {               a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac));               a = RotateLeft(a, s);               a = AddUnsigned(a, b);           }           private static void md5_HH(ref long a, long b, long c, long d, long x, long s, long ac)           {               a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac));               a = RotateLeft(a, s);               a = AddUnsigned(a, b);           }           private static void md5_II(ref long a, long b, long c, long d, long x, long s, long ac)           {               a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac));               a = RotateLeft(a, s);               a = AddUnsigned(a, b);           }           private static long[] ConvertToWordArray(string sMessage)           {               long[] ConvertToWordArray = null;               int lMessageLength = 0;               int lNumberOfWords = 0;               long[] lWordArray = null;               int lBytePosition = 0;               int lByteCount = 0;               int lWordCount = 0;               const int MODULUS_BITS = 512;               const int CONGRUENT_BITS = 448;               lMessageLength = sMessage.Length;               lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) / BITS_TO_A_BYTE)) / (MODULUS_BITS / BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS / BITS_TO_A_WORD);               lWordArray = new long[lNumberOfWords];               lBytePosition = 0;               lByteCount = 0;               while (lByteCount < lMessageLength)               {                   lWordCount = lByteCount / BYTES_TO_A_WORD;                   lBytePosition = (lByteCount % BYTES_TO_A_WORD) * BITS_TO_A_BYTE;                   lWordArray[lWordCount] = lWordArray[lWordCount] | LShift(Convert.ToByte(sMessage.Substring(lByteCount, 1).ToCharArray()[0]), lBytePosition);                   lByteCount = lByteCount + 1;               }               lWordCount = lByteCount / BYTES_TO_A_WORD;               lBytePosition = (lByteCount % BYTES_TO_A_WORD) * BITS_TO_A_BYTE;               lWordArray[lWordCount] = lWordArray[lWordCount] | LShift(0x80, lBytePosition);               lWordArray[lNumberOfWords - 2] = LShift(lMessageLength, 3);               lWordArray[lNumberOfWords - 1] = RShift(lMessageLength, 29);               ConvertToWordArray = lWordArray;               return ConvertToWordArray;           }           private static string WordToHex(long lValue)           {               string WordToHex = "";               long lByte = 0;               int lCount = 0;               for (lCount = 0; lCount <= 3; lCount++)               {                   lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) & m_lOnBits[BITS_TO_A_BYTE - 1];                   WordToHex = WordToHex + (("0" + ToHex(lByte)).Substring(("0" + ToHex(lByte)).Length - 2));               }               return WordToHex;           }           private static string ToHex(long dec)           {               string strhex = "";               while (dec > 0)               {                   strhex = tohex(dec % 16) + strhex;                   dec = dec / 16;               }               return strhex;           }           private static string tohex(long hex)           {               string strhex = "";               switch (hex)               {                   case 10: strhex = "a"; break;                   case 11: strhex = "b"; break;                   case 12: strhex = "c"; break;                   case 13: strhex = "d"; break;                   case 14: strhex = "e"; break;                   case 15: strhex = "f"; break;                   default: strhex = hex.ToString(); break;               }               return strhex;           }             public static string Encrypt(string sMessage, int stype)           {               string MD5 = "";               for (int i = 0; i <= 30; i++)               {                   m_lOnBits = Convert.ToInt64(Math.Pow(2, i + 1) - 1);                   m_l2Power = Convert.ToInt64(Math.Pow(2, i));               }               long[] x = null;               int k = 0;               long AA = 0;               long BB = 0;               long CC = 0;               long DD = 0;               long a = 0;               long b = 0;               long c = 0;               long d = 0;               const int S11 = 7;               const int S12 = 12;               const int S13 = 17;               const int S14 = 22;               const int S21 = 5;               const int S22 = 9;               const int S23 = 14;               const int S24 = 20;               const int S31 = 4;               const int S32 = 11;               const int S33 = 16;               const int S34 = 23;               const int S41 = 6;               const int S42 = 10;               const int S43 = 15;               const int S44 = 21;               x = ConvertToWordArray(sMessage);               a = 0x67452301;               b = 0xEFCDAB89;               c = 0x98BADCFE;               d = 0x10325476;               for (k = 0; k < x.Length; k += 16)               {                   AA = a;                   BB = b;                   CC = c;                   DD = d;                   md5_FF(ref a, b, c, d, x[k + 0], S11, 0xD76AA478);                   md5_FF(ref d, a, b, c, x[k + 1], S12, 0xE8C7B756);                   md5_FF(ref c, d, a, b, x[k + 2], S13, 0x242070DB);                   md5_FF(ref b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);                   md5_FF(ref a, b, c, d, x[k + 4], S11, 0xF57C0FAF);                   md5_FF(ref d, a, b, c, x[k + 5], S12, 0x4787C62A);                   md5_FF(ref c, d, a, b, x[k + 6], S13, 0xA8304613);                   md5_FF(ref b, c, d, a, x[k + 7], S14, 0xFD469501);                   md5_FF(ref a, b, c, d, x[k + 8], S11, 0x698098D8);                   md5_FF(ref d, a, b, c, x[k + 9], S12, 0x8B44F7AF);                   md5_FF(ref c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);                   md5_FF(ref b, c, d, a, x[k + 11], S14, 0x895CD7BE);                   md5_FF(ref a, b, c, d, x[k + 12], S11, 0x6B901122);                   md5_FF(ref d, a, b, c, x[k + 13], S12, 0xFD987193);                   md5_FF(ref c, d, a, b, x[k + 14], S13, 0xA679438E);                   md5_FF(ref b, c, d, a, x[k + 15], S14, 0x49B40821);                   md5_GG(ref a, b, c, d, x[k + 1], S21, 0xF61E2562);                   md5_GG(ref d, a, b, c, x[k + 6], S22, 0xC040B340);                   md5_GG(ref c, d, a, b, x[k + 11], S23, 0x265E5A51);                   md5_GG(ref b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);                   md5_GG(ref a, b, c, d, x[k + 5], S21, 0xD62F105D);                   md5_GG(ref d, a, b, c, x[k + 10], S22, 0x2441453);                   md5_GG(ref c, d, a, b, x[k + 15], S23, 0xD8A1E681);                   md5_GG(ref b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);                   md5_GG(ref a, b, c, d, x[k + 9], S21, 0x21E1CDE6);                   md5_GG(ref d, a, b, c, x[k + 14], S22, 0xC33707D6);                   md5_GG(ref c, d, a, b, x[k + 3], S23, 0xF4D50D87);                   md5_GG(ref b, c, d, a, x[k + 8], S24, 0x455A14ED);                   md5_GG(ref a, b, c, d, x[k + 13], S21, 0xA9E3E905);                   md5_GG(ref d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);                   md5_GG(ref c, d, a, b, x[k + 7], S23, 0x676F02D9);                   md5_GG(ref b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);                   md5_HH(ref a, b, c, d, x[k + 5], S31, 0xFFFA3942);                   md5_HH(ref d, a, b, c, x[k + 8], S32, 0x8771F681);                   md5_HH(ref c, d, a, b, x[k + 11], S33, 0x6D9D6122);                   md5_HH(ref b, c, d, a, x[k + 14], S34, 0xFDE5380C);                   md5_HH(ref a, b, c, d, x[k + 1], S31, 0xA4BEEA44);                   md5_HH(ref d, a, b, c, x[k + 4], S32, 0x4BDECFA9);                   md5_HH(ref c, d, a, b, x[k + 7], S33, 0xF6BB4B60);                   md5_HH(ref b, c, d, a, x[k + 10], S34, 0xBEBFBC70);                   md5_HH(ref a, b, c, d, x[k + 13], S31, 0x289B7EC6);                   md5_HH(ref d, a, b, c, x[k + 0], S32, 0xEAA127FA);                   md5_HH(ref c, d, a, b, x[k + 3], S33, 0xD4EF3085);                   md5_HH(ref b, c, d, a, x[k + 6], S34, 0x4881D05);                   md5_HH(ref a, b, c, d, x[k + 9], S31, 0xD9D4D039);                   md5_HH(ref d, a, b, c, x[k + 12], S32, 0xE6DB99E5);                   md5_HH(ref c, d, a, b, x[k + 15], S33, 0x1FA27CF8);                   md5_HH(ref b, c, d, a, x[k + 2], S34, 0xC4AC5665);                   md5_II(ref a, b, c, d, x[k + 0], S41, 0xF4292244);                   md5_II(ref d, a, b, c, x[k + 7], S42, 0x432AFF97);                   md5_II(ref c, d, a, b, x[k + 14], S43, 0xAB9423A7);                   md5_II(ref b, c, d, a, x[k + 5], S44, 0xFC93A039);                   md5_II(ref a, b, c, d, x[k + 12], S41, 0x655B59C3);                   md5_II(ref d, a, b, c, x[k + 3], S42, 0x8F0CCC92);                   md5_II(ref c, d, a, b, x[k + 10], S43, 0xFFEFF47D);                   md5_II(ref b, c, d, a, x[k + 1], S44, 0x85845DD1);                   md5_II(ref a, b, c, d, x[k + 8], S41, 0x6FA87E4F);                   md5_II(ref d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);                   md5_II(ref c, d, a, b, x[k + 6], S43, 0xA3014314);                   md5_II(ref b, c, d, a, x[k + 13], S44, 0x4E0811A1);                   md5_II(ref a, b, c, d, x[k + 4], S41, 0xF7537E82);                   md5_II(ref d, a, b, c, x[k + 11], S42, 0xBD3AF235);                   md5_II(ref c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);                   md5_II(ref b, c, d, a, x[k + 9], S44, 0xEB86D391);                   a = AddUnsigned(a, AA);                   b = AddUnsigned(b, BB);                   c = AddUnsigned(c, CC);                   d = AddUnsigned(d, DD);               }               if (stype == 32)               {                   MD5 = ((((WordToHex(a)) + (WordToHex(b))) + (WordToHex(c))) + (WordToHex(d))).ToLower();               }               else               {                   MD5 = ((WordToHex(b)) + (WordToHex(c))).ToLower();               }               return MD5;           }       }   }     

注:以上3、4中對于中文有編碼問題,上面的案例為UTF-8編碼,2中其實也有編碼的問題,但是那個主要是與當前頁面的編碼有關(guān)系,即使用默認編碼的方式。 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 恩施市| 平昌县| 岗巴县| 宁陕县| 卢湾区| 滦平县| 湘潭市| 甘谷县| 洛川县| 望都县| 手游| 观塘区| 河西区| 伊宁市| 蓬安县| 嵊泗县| 莱西市| 洛隆县| 海口市| 香格里拉县| 克东县| 如皋市| 盱眙县| 和林格尔县| 法库县| 商洛市| 安庆市| 平武县| 长丰县| 长沙市| 化隆| 天门市| 石嘴山市| 滕州市| 上饶市| 鄱阳县| 哈尔滨市| 辛集市| 桐庐县| 晋中市| 牟定县|