///<summary>/// 加密字符 ///</summary>///<param name=pToEncrypt>加密字符串</param>///<param name=skey>加密密钥</param>///<returns>返回加密</returns>publicclass DescMD5 { publicstaticstring skey ="abcdefgh"; publicstring Skey { get { return skey; } set { skey = value; } } ///<summary>/// 加密函数 ///</summary>///<param name="pToEncrypt"></param>///<returns></returns>publicstring EnCrypt(string pToEncrypt) { //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象 DESCryptoServiceProvider des =new DESCryptoServiceProvider(); des.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(skey);//建立加密对象的密钥和偏移量 des.IV = ASCIIEncoding.ASCII.GetBytes(skey); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法byte[] inputbyteArray = Encoding.Default.GetBytes(pToEncrypt);//把字符串放到byte数组中 MemoryStream ms =new 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(); } ///<summary>/// 解密ESC函数 ///</summary>///<param name="pToDecrypt">被解密的字符串</param>///<param name="sKey">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param>///<returns>返回被解密的字符串</returns>publicstring DeCrypt(string pToDecrypt) { DESCryptoServiceProvider des =new DESCryptoServiceProvider(); byte []inputbyteArray=newbyte[pToDecrypt.Length/2]; for (int i =0; i < pToDecrypt.Length /2; i++) { int x = Convert.ToInt32(pToDecrypt.Substring(i *2, 2), 16); inputbyteArray[i] = (byte)x; } des.Key = ASCIIEncoding.ASCII.GetBytes(skey); des.IV = ASCIIEncoding.ASCII.GetBytes(skey); MemoryStream ms =new MemoryStream(); CryptoStream cs =new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputbyteArray, 0, inputbyteArray.Length); cs.FlushFinalBlock(); return System.Text.Encoding.Default.GetString(ms.ToArray()); } public DescMD5() { } }