1 using System; 2 using System.IO; 3 using System.Text; 4 using System.Diagnostics; 5 using System.Web.Security; 6 using System.Security; 7 using System.Security.Cryptography; 8 using System.Web; 9 using System.Web.UI; 10 using System.Web.UI.WebControls; 11 12 namespace ASPNET3DBBook 13 { 14 public class EncryptString 15 { ///定义64位和192位的Kev和IV 16 private static byte[] Key64 = {42, 16, 93, 156, 78, 4, 218, 32}; 17 private static byte[] IV64 = {55, 103, 246, 79, 36, 99, 167, 3}; 18 private static byte[] Key192 = {42, 16, 93, 156, 78, 4, 218, 32,15, 167, 44, 80, 26, 250, 155, 112,2, 94, 11, 204, 119, 35, 184, 197}; 19 private static byte[] IV192 = {55, 103, 246, 79, 36, 99, 167, 3,42, 5, 62, 83, 184, 7, 209, 13,145, 23, 200, 58, 173, 10, 121, 222}; 20 21 /// <summary> 22 /// 加密字符串 23 /// </summary> 24 /// <param name="valueString"></param> 25 /// <returns></returns> 26 public static String Encrypt(String valueString) 27 { 28 if(valueString != "") 29 { ///创建加密的provider 30 DESCryptoServiceProvider desprovider = new DESCryptoServiceProvider(); 31 ///创建加密的流 32 MemoryStream memoryStream = new MemoryStream(); 33 CryptoStream cryptoStream = new CryptoStream(memoryStream,desprovider.CreateEncryptor 34 35 (Key64,IV64),CryptoStreamMode.Write); 36 StreamWriter writerStream = new StreamWriter(cryptoStream); 37 ///加密给定的字符串 38 writerStream.Write(valueString); 39 writerStream.Flush(); 40 cryptoStream.FlushFinalBlock(); 41 ///返回加密后的字符串 42 memoryStream.Flush(); 43 return(Convert.ToBase64String(memoryStream.GetBuffer(),0,(int)memoryStream.Length)); 44 } 45 return(null); 46 } 47 48 /// <summary> 49 /// 解密字符串 50 /// </summary> 51 /// <param name="valueString"></param> 52 /// <returns></returns> 53 public static String Decrypt(String valueString) 54 { 55 if(valueString != "") 56 { ///创建解密的provider 57 DESCryptoServiceProvider desprovider = new DESCryptoServiceProvider(); 58 byte[] buffer = Convert.FromBase64String(valueString); 59 MemoryStream memoryStream = new MemoryStream(); 60 ///解密给定的字符串 61 CryptoStream cryptoStream = new CryptoStream(memoryStream,desprovider.CreateEncryptor 62 63 (Key64,IV64),CryptoStreamMode.Read); 64 StreamReader readerStream = new StreamReader(cryptoStream); 65 return(readerStream.ReadToEnd()); 66 } 67 return(null); 68 } 69 70 /// <summary> 71 /// DES加密方法 72 /// </summary> 73 /// <param name="valueString"></param> 74 /// <returns></returns> 75 public static String EncryptTripleDES(String valueString) 76 { 77 if(valueString != "") 78 { 79 80 ///创建加密的provider 81 TripleDESCryptoServiceProvider triprovider = new TripleDESCryptoServiceProvider(); 82 ///创建加密的流 83 MemoryStream memoryStream = new MemoryStream(); 84 CryptoStream cryptoStream = new CryptoStream(memoryStream,triprovider.CreateEncryptor 85 86 (Key192,IV192),CryptoStreamMode.Write); 87 StreamWriter writerStream = new StreamWriter(cryptoStream); 88 ///加密给定的字符串 89 writerStream.Write(valueString); 90 writerStream.Flush(); 91 cryptoStream.FlushFinalBlock(); 92 ///返回加密后的字符串 93 memoryStream.Flush(); 94 return(Convert.ToBase64String(memoryStream.GetBuffer(),0,(int)memoryStream.Length)); 95 } 96 return(null); 97 } 98 99 /// <summary> 100 /// DES解密方法 101 /// </summary> 102 /// <param name="valueString"></param> 103 /// <returns></returns> 104 public static String DecryptTripleDES(String valueString) 105 { 106 if(valueString != "") 107 { ///创建加密的provider 108 TripleDESCryptoServiceProvider triprovider = new TripleDESCryptoServiceProvider(); 109 ///创建加密的流 110 byte[] buffer = Convert.FromBase64String(valueString); 111 MemoryStream memoryStream = new MemoryStream(); 112 CryptoStream cryptoStream = new CryptoStream(memoryStream,triprovider.CreateEncryptor 113 114 (Key192,IV192),CryptoStreamMode.Read); 115 StreamReader readerStream = new StreamReader(cryptoStream); 116 return(readerStream.ReadToEnd()); 117 } 118 return(null); 119 } 120 } 121 122 public class CookieEncrypt 123 { 124 /// <summary> 125 /// 设置Cookie 126 /// </summary> 127 /// <param name="cookie"></param> 128 public static void SetCookie(HttpCookie cookie) 129 { 130 HttpContext.Current.Response.Cookies.Set(cookie); 131 } 132 133 /// <summary> 134 /// 设置Cookie 135 /// </summary> 136 /// <param name="key"></param> 137 /// <param name="valueString"></param> 138 public static void SetCookie(String key,String valueString) 139 { ///获取关键字和值 140 key = HttpContext.Current.Server.UrlEncode(key); 141 valueString = HttpContext.Current.Server.UrlEncode(valueString); 142 ///设置Cookie 143 HttpCookie cookie = new HttpCookie(key,valueString); 144 SetCookie(cookie); 145 } 146 147 /// <summary> 148 /// 设置Cookie 149 /// </summary> 150 /// <param name="key"></param> 151 /// <param name="valueString"></param> 152 /// <param name="expires"></param> 153 public static void SetCookie(String key,String valueString,DateTime expires) 154 { ///获取关键字和值 155 key = HttpContext.Current.Server.UrlEncode(key); 156 valueString = HttpContext.Current.Server.UrlEncode(valueString); 157 ///设置Cookie 158 HttpCookie cookie = new HttpCookie(key,valueString); 159 cookie.Expires = expires; 160 SetCookie(cookie); 161 } 162 163 /// <summary> 164 /// 设置使用DES方法加密之后的Cookie 165 /// </summary> 166 /// <param name="key"></param> 167 /// <param name="valueString"></param> 168 public static void SetTripleDESEncryptedCookie(String key,String valueString) 169 { 170 171 ///获取关键字和值 172 key = EncryptString.EncryptTripleDES(key); 173 valueString = EncryptString.EncryptTripleDES(valueString); 174 ///设置Cookie 175 SetCookie(key,valueString); 176 } 177 178 /// <summary> 179 /// 设置使用DES方法加密之后的Cookie 180 /// </summary> 181 /// <param name="key"></param> 182 /// <param name="valueString"></param> 183 /// <param name="expires"></param> 184 public static void SetTripleDESEncryptedCookie(String key,String valueString,DateTime expires) 185 { 186 187 ///获取关键字和值 188 key = EncryptString.EncryptTripleDES(key); 189 valueString = EncryptString.EncryptTripleDES(valueString); 190 ///设置Cookie 191 SetCookie(key,valueString,expires); 192 } 193 194 /// <summary> 195 /// 设置加密之后的Cookie 196 /// </summary> 197 /// <param name="key"></param> 198 /// <param name="valueString"></param> 199 public static void SetEncryptedCookie(String key,String valueString) 200 { ///获取关键字和值 201 key = EncryptString.Encrypt(key); 202 valueString = EncryptString.Encrypt(valueString); 203 ///设置Cookie 204 SetCookie(key,valueString); 205 } 206 207 /// <summary> 208 /// 设置加密之后的Cookie 209 /// </summary> 210 /// <param name="key"></param> 211 /// <param name="valueString"></param> 212 /// <param name="expires"></param> 213 public static void SetEncryptedCookie(String key,String valueString,DateTime expires) 214 { 215 216 ///获取关键字和值 217 key = EncryptString.Encrypt(key); 218 valueString = EncryptString.Encrypt(valueString); 219 ///设置Cookie 220 SetCookie(key,valueString,expires); 221 } 222 223 /// <summary> 224 /// 获取DES方法加密之后的Cookie 225 /// </summary> 226 /// <param name="key"></param> 227 /// <returns></returns> 228 public static String GetTripleDESEncryptedCookieValue(String key) 229 { 230 231 ///获取关键字和值 232 key = EncryptString.EncryptTripleDES(key); 233 String valueString = GetCookieValue(key); 234 ///获取Cookie 235 valueString = EncryptString.DecryptTripleDES(valueString); 236 return(valueString); 237 } 238 239 /// <summary> 240 /// 获取DES方法加密之后的Cookie 241 /// </summary> 242 /// <param name="key"></param> 243 /// <returns></returns> 244 public static String GetEncryptedCookieValue(String key) 245 { 246 247 ///获取关键字和值 248 key = EncryptString.Encrypt(key); 249 String valueString = GetCookieValue(key); 250 ///获取Cookie 251 valueString = EncryptString.Decrypt(valueString); 252 return(valueString); 253 } 254 255 /// <summary> 256 /// 获取Cookie 257 /// </summary> 258 /// <param name="key"></param> 259 /// <returns></returns> 260 public static HttpCookie GetCookie(String key) 261 { 262 263 ///获取关键字和值 264 key = HttpContext.Current.Server.UrlEncode(key); 265 ///获取Cookie 266 return(HttpContext.Current.Request.Cookies.Get(key)); 267 } 268 269 /// <summary> 270 /// 获取Cookie 271 /// </summary> 272 /// <param name="key"></param> 273 /// <returns></returns> 274 public static String GetCookieValue(String key) 275 { 276 277 ///获取关键字和值 278 String valueString = GetCookie(key).Value; 279 ///获取Cookie 280 valueString = HttpContext.Current.Server.UrlDecode(valueString); 281 return(valueString); 282 } 283 } 284 }