MD5加密

来源:互联网 发布:网络爬虫兼职 编辑:程序博客网 时间:2024/05/16 09:36

直接粘贴代码。。。确实有用!~~~

 

 

using System.Security.Cryptography;

using    System.IO;  

using    System.Text;

///MD5加密

  public string MD5Encrypt(string    pToEncrypt,  string    sKey)

    {  

     DESCryptoServiceProvider    des  =  new    DESCryptoServiceProvider();  

   byte[]    inputByteArray  =    Encoding.Default.GetBytes(pToEncrypt);  

     des.Key  =    ASCIIEncoding.ASCII.GetBytes(sKey);  

     des.IV  =    ASCIIEncoding.ASCII.GetBytes(sKey);  

     MemoryStream    ms  =  new    MemoryStream();  

     CryptoStream    cs  =  new    CryptoStream(ms,    des.CreateEncryptor(),CryptoStreamMode.Write);  

     cs.Write(inputByteArray,  0,    inputByteArray.Length);  

     cs.FlushFinalBlock();  

     StringBuilder    ret  =  new    StringBuilder();  

   foreach(byte    b  in    ms.ToArray())  

     {  

      ret.AppendFormat("{0:X2}",    b);  

     }  

     ret.ToString();  

   return    ret.ToString();  

    }

  ///MD5解密

  public string MD5Decrypt(string    pToDecrypt,  string    sKey)

    {

     DESCryptoServiceProvider    des  =  new    DESCryptoServiceProvider();  

   byte[]    inputByteArray  =  new  byte[pToDecrypt.Length  /  2];  

   for(int    x  =  0;    x  <    pToDecrypt.Length  /  2;    x++)  

     {  

    int    i  =    (Convert.ToInt32(pToDecrypt.Substring(x  *  2,  2),  16));  

      inputByteArray[x]  =    (byte)i;  

     }  

     des.Key  =    ASCIIEncoding.ASCII.GetBytes(sKey);  

     des.IV  =    ASCIIEncoding.ASCII.GetBytes(sKey);  

     MemoryStream    ms  =  new    MemoryStream();  

     CryptoStream    cs  =  new    CryptoStream(ms,    des.CreateDecryptor(),CryptoStreamMode.Write);  

     cs.Write(inputByteArray,  0,    inputByteArray.Length);  

     cs.FlushFinalBlock();  

     StringBuilder    ret  =  new    StringBuilder();  

             

   return    System.Text.Encoding.Default.GetString(ms.ToArray());  

    }

-------------------------------------------------------------------------------

using System;

using System.Text;

using System.Globalization;

using System.Security.Cryptography;

class DES

{

// 创建Key

public string GenerateKey()

{

DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();

return ASCIIEncoding.ASCII.GetString(desCrypto.Key);

}

// 加密字符串

public string EncryptString(string sInputString, string sKey)

{

byte [] data = Encoding.UTF8.GetBytes(sInputString);

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

ICryptoTransform desencrypt = DES.CreateEncryptor();

byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);

return BitConverter.ToString(result);

}

// 解密字符串

public string DecryptString(string sInputString, string sKey)

{

string [] sInput = sInputString.Split("-".ToCharArray());

byte [] data = new byte[sInput.Length];

for(int i = 0; i < sInput.Length; i++)

{

data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);

}

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();

DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);

ICryptoTransform desencrypt = DES.CreateDecryptor();

byte [] result = desencrypt.TransformFinalBlock(data, 0, data.Length);

return Encoding.UTF8.GetString(result);

}

}

class Test

{

static void Main()

{

DES des = new DES();

string key = des.GenerateKey();

string s0 = "中国软件 - csdn.net";

string s1 = des.EncryptString(s0, key);

string s2 = des.DecryptString(s1, key);

Console.WriteLine("原串: [{0}]", s0);

Console.WriteLine("加密: [{0}]", s1);

Console.WriteLine("解密: [{0}]", s2);

}

}

/* 程序输出:

原串: [中国软件 - csdn.net]

加密: [E8-30-D0-F2-2F-66-52-14-45-9A-DC-C5-85-E7-62-9B-AD-B7-82-CF-A8-0A-59-77]

解密: [中国软件 - csdn.net]