我在网上找了一个给cookie加密码的方法
 private static byte[] Key64 = { 42, 16, 93, 156, 78, 4, 218, 32 };
        private static byte[] IV64 = { 55, 103, 246, 79, 36, 99, 167, 3 };
        public static String Encrypt(String valueString)
        {            if (valueString != "")
            {   //定义DES的Provider                DESCryptoServiceProvider desprovider =                new DESCryptoServiceProvider();                //定义内存流                MemoryStream memoryStream = new MemoryStream();                //定义加密流                CryptoStream cryptoStream = new CryptoStream(memoryStream,                desprovider.CreateEncryptor(Key64, IV64),                CryptoStreamMode.Write);                //定义写IO流                StreamWriter writerStream = new StreamWriter(cryptoStream);                //写入加密后的字符流                writerStream.Write(valueString);                writerStream.Flush();                cryptoStream.FlushFinalBlock();                memoryStream.Flush();                //返回加密后的字符串                return (Convert.ToBase64String(memoryStream.GetBuffer(), 0,                (int)memoryStream.Length));            }            return (null);        }        public static String Decrypt(String valueString)
        {            if (valueString != "")
            {   //定义DES的Provider                DESCryptoServiceProvider desprovider =                new DESCryptoServiceProvider();                //转换解密的字符串为二进制                byte[] buffer = Convert.FromBase64String(valueString);                //定义内存流                MemoryStream memoryStream = new MemoryStream();                //定义加密流                CryptoStream cryptoStream = new CryptoStream(memoryStream,                desprovider.CreateEncryptor(Key64, IV64),                CryptoStreamMode.Read);                //定义读IO流                StreamReader readerStream = new StreamReader(cryptoStream);                //返回解密后的字符串                return (readerStream.ReadToEnd());            }            return (null);        }
999999999加密码后得9xUMRbhvMx/h8cPh6OAs9w== 
在用 Decrypt(“9xUMRbhvMx/h8cPh6OAs9w== ”)解密后是 H�`9s� 无语了,咋回事,
或谁有更好的办法

解决方案 »

  1.   

    private static byte[] Keys = { 42, 16, 93, 156, 78, 4, 218, 32 };
      public static string Encrypt(string encryptString, string encryptKey)
      {
      try
      {
      byte[] bKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
      byte[] bIV = Keys;
      byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
      DESCryptoServiceProvider des= new DESCryptoServiceProvider();
      MemoryStream mStream = new MemoryStream();
      CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write);
      cStream.Write(inputByteArray, 0, inputByteArray.Length);
      cStream.FlushFinalBlock();
      return Convert.ToBase64String(mStream.ToArray());
      }
      catch
      {
      return encryptString;
      }
      }
      public static string Decrypt(string decryptString, string decryptKey)
      {
      try
      {
      byte[] bKey = Encoding.UTF8.GetBytes(decryptKey);
      byte[] bIV = Keys;
      byte[] inputByteArray = Convert.FromBase64String(decryptString);
      DESCryptoServiceProvider des= new DESCryptoServiceProvider();
      MemoryStream mStream = new MemoryStream();
      CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write);
      cStream.Write(inputByteArray, 0, inputByteArray.Length);
      cStream.FlushFinalBlock();
      return Encoding.UTF8.GetString(mStream.ToArray());
      }
      catch
      {
      return decryptString;
      }
      }