//--------------EncryptString.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Security.Cryptography;
using System.IO;
/// <summary>
/// EncryptString 的摘要说明
/// </summary>
public class EncryptString
{
public EncryptString()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
    private static byte[] Key64 = { 42, 16, 93, 156, 78, 4, 218, 32 };
    private static byte[] IV64 = { 55, 103, 246, 79, 36, 99, 167, 3 };
    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};
    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};
    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);
    }
    public static String EncryptTripleDES(String valueString)
    {
        if (valueString != "")
        {   //定义TripleDES的Provider
            TripleDESCryptoServiceProvider triprovider =
            new TripleDESCryptoServiceProvider();
            //定义内存流
            MemoryStream memoryStream = new MemoryStream();
            //定义加密流
            CryptoStream cryptoStream = new CryptoStream(memoryStream,
            triprovider.CreateEncryptor(Key192, IV192),
            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 DecryptTripleDES(String valueString)
    {
        if (valueString != "")
        {   //定义TripleDES的Provider
            TripleDESCryptoServiceProvider triprovider =
            new TripleDESCryptoServiceProvider();
            //转换解密的字符串为二进制
            byte[] buffer = Convert.FromBase64String(valueString);
            //定义内存流
            MemoryStream memoryStream = new MemoryStream();
            //定义加密流            CryptoStream cryptoStream = new CryptoStream(memoryStream,
              triprovider.CreateEncryptor(Key64, IV64),
              CryptoStreamMode.Read);
            //定义读IO流
            StreamReader readerStream = new StreamReader(cryptoStream);
            //返回解密后的字符串
            return (readerStream.ReadToEnd());
        }
        return (null);
    }
}//-------------------CookieEncrypt.csusing System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;/// <summary>
/// CookieEncrypt 的摘要说明
/// </summary>
public class CookieEncrypt
{
public CookieEncrypt()
{
//
// TODO: 在此处添加构造函数逻辑
// }
    public static void SetCookie(HttpCookie cookie)
    {   //设置Cookie
        HttpContext.Current.Response.Cookies.Set(cookie);
    }
    public static void SetCookie(String key, String valueString)
    {   //设置加密后的Cookie
        key = HttpContext.Current.Server.UrlEncode(key);
        valueString = HttpContext.Current.Server.UrlEncode(valueString);
        HttpCookie cookie = new HttpCookie(key, valueString);
        SetCookie(cookie);
    }
    public static void SetCookie(String key, String valueString,
    DateTime expires)
    {   //设置加密后的Cookie,并设置Cookie的有效时间
        key = HttpContext.Current.Server.UrlEncode(key);
        valueString = HttpContext.Current.Server.UrlEncode(valueString);
        HttpCookie cookie = new HttpCookie(key, valueString);
        cookie.Expires = expires;
        SetCookie(cookie);
    }
    public static void SetTripleDESEncryptedCookie(String key,
    String valueString)
    {   //设置使用TripleDES加密后的Cookie
        key = EncryptString.EncryptTripleDES(key);
        valueString = EncryptString.EncryptTripleDES(valueString);
        SetCookie(key, valueString);
    }
    public static void SetTripleDESEncryptedCookie(String key,
    String valueString, DateTime expires)
    {   //设置使用TripleDES加密后的Cookie,并设置Cookie的有效时间
        key = EncryptString.EncryptTripleDES(key);
        valueString = EncryptString.EncryptTripleDES(valueString);
        SetCookie(key, valueString, expires);
    }
    public static void SetEncryptedCookie(String key, String valueString)
    {   //设置使用DES加密后的Cookie
        key = EncryptString.Encrypt(key);
        valueString = EncryptString.Encrypt(valueString);
        SetCookie(key, valueString);
    }
    public static void SetEncryptedCookie(String key,
    String valueString, DateTime expires)
    {   //设置使用DES加密后的Cookie,并设置Cookie的有效时间
        key = EncryptString.Encrypt(key);
        valueString = EncryptString.Encrypt(valueString);
        SetCookie(key, valueString, expires);
    }
    public static String GetTripleDESEncryptedCookieValue(String key)
    {   //获取使用TripleDES解密后的Cookie
        key = EncryptString.EncryptTripleDES(key);
        String valueString = GetCookieValue(key);
        valueString = EncryptString.DecryptTripleDES(valueString);
        return (valueString);
    }
    public static String GetEncryptedCookieValue(String key)
    {   //获取使用DES解密后的Cookie
        key = EncryptString.Encrypt(key);
        String valueString = GetCookieValue(key);
        valueString = EncryptString.Decrypt(valueString);
        return (valueString);
    }
    public static HttpCookie GetCookie(String key)
    {   //通过关键字获取Cookie
        key = HttpContext.Current.Server.UrlEncode(key);
        return (HttpContext.Current.Request.Cookies.Get(key));
    }
    public static String GetCookieValue(String key)
    {   //通过关键字获取Cookie的value
        String valueString = GetCookie(key).Value;
        valueString = HttpContext.Current.Server.UrlDecode(valueString);
        return (valueString);
    }
}
//--------------------Default.aspx
protected void Page_Load(object sender, EventArgs e)
    {
        
        CookieEncrypt.SetEncryptedCookie("aa", "bcd", DateTime.Now.AddDays(1));
        Response.Write(CookieEncrypt.GetEncryptedCookieValue("aa"));    }
-------------------------------------      输出后显示乱码怎么解决????????????????????????????????????????????????????????
-------------------------------------

解决方案 »

  1.   

    怎么办?删除呗!使用.net framework人家类库中经过测试的DES程序。
      

  2.   


      public static class Des 
        { 
            //加密
            public static string Encrypting(string Source, string Key) 
            { 
                byte[] buffer1 = Encoding.ASCII.GetBytes(Source); 
                MemoryStream stream1 = new MemoryStream(); 
                SymmetricAlgorithm algorithm1 = new DESCryptoServiceProvider(); 
                byte[] buffer2 = Des.GetLegalKey(algorithm1, Key); 
                algorithm1.Key = buffer2; 
                algorithm1.IV = buffer2; 
                ICryptoTransform transform1 = algorithm1.CreateEncryptor(); 
                CryptoStream stream2 = new CryptoStream(stream1, transform1, CryptoStreamMode.Write); 
                stream2.Write(buffer1, 0, buffer1.Length); 
                stream2.FlushFinalBlock(); 
                byte[] buffer3 = stream1.GetBuffer(); 
                int num1 = 0; 
                num1 = 0; 
                while (num1 &lt; buffer3.Length) 
                { 
                    if (buffer3[num1] == 0) 
                    { 
                        break; 
                    } 
                    num1++; 
                } 
                stream1.Close(); 
                stream2.Close(); 
                transform1.Dispose(); 
                return Convert.ToBase64String(buffer3, 0, num1); 
            } 
           //解密
            public static string Decrypting(string Source, string Key) 
            { 
                byte[] buffer1 = Convert.FromBase64String(Source); 
                MemoryStream stream1 = new MemoryStream(buffer1, 0, buffer1.Length); 
                SymmetricAlgorithm algorithm1 = new DESCryptoServiceProvider(); 
                byte[] buffer2 = Des.GetLegalKey(algorithm1, Key); 
                algorithm1.Key = buffer2; 
                algorithm1.IV = buffer2; 
                ICryptoTransform transform1 = algorithm1.CreateDecryptor(); 
                CryptoStream stream2 = new CryptoStream(stream1, transform1, CryptoStreamMode.Read); 
                StreamReader reader1 = new StreamReader(stream2); 
                return reader1.ReadToEnd(); 
            } 
            private static byte[] GetLegalKey(SymmetricAlgorithm pCryptoService, string Key) 
            { 
                string text1 = Key; 
                pCryptoService.GenerateKey(); 
                int num1 = pCryptoService.Key.Length; 
                if (text1.Length &gt; num1) 
                { 
                    text1 = text1.Substring(0, num1); 
                } 
                else if (text1.Length &lt; num1) 
                { 
                    text1 = text1.PadRight(num1, ' '); 
                } 
                return Encoding.ASCII.GetBytes(text1); 
            } 
        } 
      

  3.   

     倒数第五行  else if (text1.Length &lt; num1) 红色标记的是,