1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.Web.Security; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8 using System.Web.UI.WebControls.WebParts; 9 using System.Web.UI.HtmlControls; 10 using System.Xml ; 11 using System.Data.SqlClient; 12 using System.IO; 13 using System.Net; 14 using System.Text; 15 using System.Text.RegularExpressions; 16 using System.Security.Cryptography; 17 18 19 /// <summary> 20 /// 加密 21 /// </summary> 22 /// <param name="pToEncrypt">要加密的字符串</param> 23 /// <param name="sKey">加密密匙 例:"abcdefgh"</param> 24 /// <returns></returns> 25 public string Encrypt(string pToEncrypt) 26 { 27 string sKey = "abcdefgh"; 28 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中 29 byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt); 30 //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt); 31 des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量 32 des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 33 MemoryStream ms = new MemoryStream(); //使得输入密码必须输入英文文本 34 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); 35 cs.Write(inputByteArray, 0, inputByteArray.Length); 36 cs.FlushFinalBlock(); 37 StringBuilder ret = new StringBuilder(); 38 foreach (byte b in ms.ToArray()) 39 { 40 ret.AppendFormat("{0:X2}", b); 41 } 42 ret.ToString(); 43 return ret.ToString(); 44 } 45 /// <summary> 46 /// 解密 47 /// </summary> 48 /// <param name="pToDecrypt">要解密字符串</param> 49 /// <param name="sKey">解密密匙 例:"abcdefgh"</param> 50 /// <returns></returns> 51 public string Decrypt(string pToDecrypt) 52 { 53 string sKey = "abcdefgh"; 54 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 55 byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; 56 for (int x = 0; x < pToDecrypt.Length / 2; x++) 57 { 58 int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); 59 inputByteArray[x] = (byte)i; 60 } 61 des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改 62 des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 63 MemoryStream ms = new MemoryStream(); 64 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 65 cs.Write(inputByteArray, 0, inputByteArray.Length); 66 cs.FlushFinalBlock(); 67 StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象 68 return System.Text.Encoding.Default.GetString(ms.ToArray()); 69 }