C# 加密解密(DES,3DES,MD5,Base64) 类

public  sealed  class  EncryptUtils
     {
         #region Base64加密解密
         /// <summary>
         /// Base64加密
         /// </summary>
         /// <param name="input">需要加密的字符串</param>
         /// <returns></returns>
         public  static  string  Base64Encrypt( string  input)
         {
             return  Base64Encrypt(input, new  UTF8Encoding());
         }
 
         /// <summary>
         /// Base64加密
         /// </summary>
         /// <param name="input">需要加密的字符串</param>
         /// <param name="encode">字符编码</param>
         /// <returns></returns>
         public  static  string  Base64Encrypt( string  input, Encoding encode)
         {
             return  Convert.ToBase64String(encode.GetBytes(input));
         }
 
         /// <summary>
         /// Base64解密
         /// </summary>
         /// <param name="input">需要解密的字符串</param>
         /// <returns></returns>
         public  static  string  Base64Decrypt( string  input)
         {
             return  Base64Decrypt(input, new  UTF8Encoding());
         }
 
         /// <summary>
         /// Base64解密
         /// </summary>
         /// <param name="input">需要解密的字符串</param>
         /// <param name="encode">字符的编码</param>
         /// <returns></returns>
         public  static  string  Base64Decrypt( string  input, Encoding encode)
         {
             return  encode.GetString(Convert.FromBase64String(input));
         }
         #endregion
 
         #region DES加密解密
         /// <summary>
         /// DES加密
         /// </summary>
         /// <param name="data">加密数据</param>
         /// <param name="key">8位字符的密钥字符串</param>
         /// <param name="iv">8位字符的初始化向量字符串</param>
         /// <returns></returns>
         public  static  string  DESEncrypt( string  data, string  key, string  iv)
         {
             byte [] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
             byte [] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
 
             DESCryptoServiceProvider cryptoProvider = new  DESCryptoServiceProvider();
             int  i = cryptoProvider.KeySize;
             MemoryStream ms = new  MemoryStream();
             CryptoStream cst = new  CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
 
             StreamWriter sw = new  StreamWriter(cst);
             sw.Write(data);
             sw.Flush();
             cst.FlushFinalBlock();
             sw.Flush();
             return  Convert.ToBase64String(ms.GetBuffer(), 0, ( int )ms.Length);
         }
 
         /// <summary>
         /// DES解密
         /// </summary>
         /// <param name="data">解密数据</param>
         /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
         /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
         /// <returns></returns>
         public  static  string  DESDecrypt( string  data, string  key, string  iv)
         {
             byte [] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
             byte [] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
 
             byte [] byEnc;
             try
             {
                 byEnc = Convert.FromBase64String(data);
             }
             catch
             {
                 return  null ;
             }
 
             DESCryptoServiceProvider cryptoProvider = new  DESCryptoServiceProvider();
             MemoryStream ms = new  MemoryStream(byEnc);
             CryptoStream cst = new  CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
             StreamReader sr = new  StreamReader(cst);
             return  sr.ReadToEnd();
         }
         #endregion
 
         #region MD5加密
         /// <summary>
         /// MD5加密
         /// </summary>
         /// <param name="input">需要加密的字符串</param>
         /// <returns></returns>
         public  static  string  MD5Encrypt( string  input)
         {
             return  MD5Encrypt(input, new  UTF8Encoding());
         }
 
         /// <summary>
         /// MD5加密
         /// </summary>
         /// <param name="input">需要加密的字符串</param>
         /// <param name="encode">字符的编码</param>
         /// <returns></returns>
         public  static  string  MD5Encrypt( string  input, Encoding encode)
         {
             MD5 md5 = new  MD5CryptoServiceProvider();
             byte [] t = md5.ComputeHash(encode.GetBytes(input));
             StringBuilder sb = new  StringBuilder(32);
             for  ( int  i = 0; i < t.Length; i++)
                 sb.Append(t[i].ToString( "x" ).PadLeft(2, '0' ));
             return  sb.ToString();
         }
 
         /// <summary>
         /// MD5对文件流加密
         /// </summary>
         /// <param name="sr"></param>
         /// <returns></returns>
         public  static  string  MD5Encrypt(Stream stream)
         {
             MD5 md5serv = MD5CryptoServiceProvider.Create();
             byte [] buffer = md5serv.ComputeHash(stream);
             StringBuilder sb = new  StringBuilder();
             foreach  ( byte  var  in  buffer)
                 sb.Append( var .ToString( "x2" ));
             return  sb.ToString();
         }
 
         /// <summary>
         /// MD5加密(返回16位加密串)
         /// </summary>
         /// <param name="input"></param>
         /// <param name="encode"></param>
         /// <returns></returns>
         public  static  string  MD5Encrypt16( string  input, Encoding encode)
         {
             MD5CryptoServiceProvider md5 = new  MD5CryptoServiceProvider();
             string  result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
             result = result.Replace( "-" , "" );
             return  result;
         }
         #endregion
 
         #region 3DES 加密解密
 
         public  static  string  DES3Encrypt( string  data, string  key)
         {
             TripleDESCryptoServiceProvider DES = new  TripleDESCryptoServiceProvider();
 
             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
             DES.Mode = CipherMode.CBC;
             DES.Padding = PaddingMode.PKCS7;
 
             ICryptoTransform DESEncrypt = DES.CreateEncryptor();
 
             byte [] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
             return  Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
         }
 
         public  static  string  DES3Decrypt( string  data, string  key)
         {
             TripleDESCryptoServiceProvider DES = new  TripleDESCryptoServiceProvider();
 
             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
             DES.Mode = CipherMode.CBC;
             DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
 
             ICryptoTransform DESDecrypt = DES.CreateDecryptor();
 
             string  result = "" ;
             try
             {
                 byte [] Buffer = Convert.FromBase64String(data);
                 result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
             }
             catch  (Exception e)
             {
 
             }
             return  result;
         }
 
         #endregion
     }

你可能感兴趣的:(base64)