c#实现MD5 加密与解密的代码

发布时间:2020-12-12编辑:脚本学堂
为大家介绍c#实现md5加密与解决的代码,有需要的朋友,可以学习参考下。

代码如下:

using System;
using System.Security.Cryptography;  
using System.Text;
namespace Maticsoft.Common.DEncrypt
{
 /// <summary>
 /// DES加密/解密类。
    /// Copyright (C) Maticsoft
 /// </summary>
 public class DESEncrypt
 {
  public DESEncrypt()
  {   
  }

#region ========加密======== 
/// <summary>
/// 加密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
  public static string Encrypt(string Text) 
  {
   return Encrypt(Text,"MATICSOFT");
  }
  /// <summary> 
  /// 加密数据 
  /// </summary> 
  /// <param name="Text"></param> 
  /// <param name="sKey"></param> 
  /// <returns></returns> 
  public static string Encrypt(string Text,string sKey) 
  { 
   DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
   byte[] inputByteArray; 
   inputByteArray=Encoding.Default.GetBytes(Text); 
   des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); 
   des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); 
   System.IO.MemoryStream ms=new System.IO.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); 
   } 
   return ret.ToString(); 
  }
#endregion
  
#region ========解密======== 
/// <summary>
/// 解密
/// </summary>
/// <param name="Text"></param>
/// <returns></returns>
public static string Decrypt(string Text) 
{
   return Decrypt(Text,"MATICSOFT");
}
  /// <summary> 
  /// 解密数据 
  /// </summary> 
  /// <param name="Text"></param> 
  /// <param name="sKey"></param> 
  /// <returns></returns> 
  public static string Decrypt(string Text,string sKey) 
  { 
   DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
   int len; 
   len=Text.Length/2; 
   byte[] inputByteArray = new byte[len]; 
   int x,i; 
   for(x=0;x<len;x++) 
   { 
    i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); 
    inputByteArray[x]=(byte)i; 
   } 
   des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); 
   des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); 
   System.IO.MemoryStream ms=new System.IO.MemoryStream(); 
   CryptoStream cs=new CryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write); 
   cs.Write(inputByteArray,0,inputByteArray.Length); 
   cs.FlushFinalBlock(); 
   return Encoding.Default.GetString(ms.ToArray()); 
  } 
  #endregion
 }
}