`
minh456
  • 浏览: 61652 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C# MD5加密解密

    博客分类:
  • C#
阅读更多
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]
*/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics