using System; using System.Data; using System.Configuration; using System.Security.Cryptography; using System.IO; namespace UrlSubmit { sealed class Cryptogram { const string KEY_64 = "2A3up9og";//注意了,是8个字符,64位 -- const string IV_64 = "r4tupn0k";//可以和上面的不一致 但是一定要是8位 #region EnCode 加密 /// <summary> /// EnCode 加密 /// </summary> /// <param name="str">要加密的字符串</param> /// <returns></returns> internal static string EncryptDES(string data) { byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); 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); } #endregion #region DecryptDES 解密 /// <summary> /// DeCode 解密 /// </summary> /// <param name="str">要解密的字符串</param> /// <returns></returns> internal static string DecryptDES(string data) { byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc; try { byEnc = Convert.FromBase64String(data); } catch { return data; } 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 } }