加密解密

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Security.Cryptography;
  6 using System.IO;
  7 
  8 namespace 加密解密
  9 {
 10 
 11     public sealed class EncryptUtils
 12     {
 13         #region Base64加密解密
 14         /// <summary>
 15         /// Base64加密
 16         /// </summary>
 17         /// <param name="input">需要加密的字符串</param>
 18         /// <returns></returns>
 19         public static string Base64Encrypt(string input)
 20         {
 21             return Base64Encrypt(input, new UTF8Encoding());
 22         }
 23 
 24         /// <summary>
 25         /// Base64加密
 26         /// </summary>
 27         /// <param name="input">需要加密的字符串</param>
 28         /// <param name="encode">字符编码</param>
 29         /// <returns></returns>
 30         public static string Base64Encrypt(string input, Encoding encode)
 31         {
 32             return Convert.ToBase64String(encode.GetBytes(input));
 33         }
 34 
 35         /// <summary>
 36         /// Base64解密
 37         /// </summary>
 38         /// <param name="input">需要解密的字符串</param>
 39         /// <returns></returns>
 40         public static string Base64Decrypt(string input)
 41         {
 42             return Base64Decrypt(input, new UTF8Encoding());
 43         }
 44 
 45         /// <summary>
 46         /// Base64解密
 47         /// </summary>
 48         /// <param name="input">需要解密的字符串</param>
 49         /// <param name="encode">字符的编码</param>
 50         /// <returns></returns>
 51         public static string Base64Decrypt(string input, Encoding encode)
 52         {
 53             return encode.GetString(Convert.FromBase64String(input));
 54         }
 55         #endregion
 56 
 57         #region DES加密解密
 58         /// <summary>
 59         /// DES加密
 60         /// </summary>
 61         /// <param name="data">加密数据</param>
 62         /// <param name="key">8位字符的密钥字符串</param>
 63         /// <param name="iv">8位字符的初始化向量字符串</param>
 64         /// <returns></returns>
 65         public static string DESEncrypt(string data, string key, string iv)
 66         {
 67             byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
 68             byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
 69 
 70             DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
 71             int i = cryptoProvider.KeySize;
 72             MemoryStream ms = new MemoryStream();
 73             CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
 74 
 75             StreamWriter sw = new StreamWriter(cst);
 76             sw.Write(data);
 77             sw.Flush();
 78             cst.FlushFinalBlock();
 79             sw.Flush();
 80             return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
 81         }
 82 
 83         /// <summary>
 84         /// DES解密
 85         /// </summary>
 86         /// <param name="data">解密数据</param>
 87         /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
 88         /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
 89         /// <returns></returns>
 90         public static string DESDecrypt(string data, string key, string iv)
 91         {
 92             byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
 93             byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
 94 
 95             byte[] byEnc;
 96             try
 97             {
 98                 byEnc = Convert.FromBase64String(data);
 99             }
100             catch
101             {
102                 return null;
103             }
104 
105             DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
106             MemoryStream ms = new MemoryStream(byEnc);
107             CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
108             StreamReader sr = new StreamReader(cst);
109             return sr.ReadToEnd();
110         }
111         #endregion
112 
113         #region MD5加密
114         /// <summary>
115         /// MD5加密
116         /// </summary>
117         /// <param name="input">需要加密的字符串</param>
118         /// <returns></returns>
119         public static string MD5Encrypt(string input)
120         {
121             return MD5Encrypt(input, new UTF8Encoding());
122         }
123 
124         /// <summary>
125         /// MD5加密
126         /// </summary>
127         /// <param name="input">需要加密的字符串</param>
128         /// <param name="encode">字符的编码</param>
129         /// <returns></returns>
130         public static string MD5Encrypt(string input, Encoding encode)
131         {
132             MD5 md5 = new MD5CryptoServiceProvider();
133             byte[] t = md5.ComputeHash(encode.GetBytes(input));
134             StringBuilder sb = new StringBuilder(32);
135             for (int i = 0; i < t.Length; i++)
136                 sb.Append(t[i].ToString("x").PadLeft(2, '0'));
137             return sb.ToString();
138         }
139 
140         /// <summary>
141         /// MD5对文件流加密
142         /// </summary>
143         /// <param name="sr"></param>
144         /// <returns></returns>
145         public static string MD5Encrypt(Stream stream)
146         {
147             MD5 md5serv = MD5CryptoServiceProvider.Create();
148             byte[] buffer = md5serv.ComputeHash(stream);
149             StringBuilder sb = new StringBuilder();
150             foreach (byte var in buffer)
151                 sb.Append(var.ToString("x2"));
152             return sb.ToString();
153         }
154 
155         /// <summary>
156         /// MD5加密(返回16位加密串)
157         /// </summary>
158         /// <param name="input"></param>
159         /// <param name="encode"></param>
160         /// <returns></returns>
161         public static string MD5Encrypt16(string input, Encoding encode)
162         {
163             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
164             string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
165             result = result.Replace("-", "");
166             return result;
167         }
168         #endregion
169 
170         #region 3DES 加密解密
171 
172         public static string DES3Encrypt(string data, string key)
173         {
174             TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
175 
176             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
177             DES.Mode = CipherMode.CBC;
178             DES.Padding = PaddingMode.PKCS7;
179 
180             ICryptoTransform DESEncrypt = DES.CreateEncryptor();
181 
182             byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
183             return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
184         }
185 
186         public static string DES3Decrypt(string data, string key)
187         {
188             TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
189 
190             DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
191             DES.Mode = CipherMode.CBC;
192             DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
193 
194             ICryptoTransform DESDecrypt = DES.CreateDecryptor();
195 
196             string result = "";
197             try
198             {
199                 byte[] Buffer = Convert.FromBase64String(data);
200                 result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
201             }
202             catch (Exception e)
203             {
204 
205             }
206             return result;
207         }
208 
209         #endregion
210     }
211 }

 

posted @ 2016-02-20 20:32  ChineseMoonGod  阅读(294)  评论(0编辑  收藏  举报