http://expert.csdn.net/Expert/topic/2989/2989325.xml?temp=.7789728

解决方案 »

  1.   

    //欢迎大家修改指正
    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    //using System.Web.HttpUtility;
    //调用任意构造函数后,用Encrypto()加密,用Decrypto() 解密 
    namespace Game2meCardWebLibs
    {
    /// <summary>
    /// Secret 的摘要说明。
    /// </summary>
    public class Secret
    {

    private SymmetricAlgorithm mobjCryptoService;
    private string Key;
    private string iv;
    /// <summary>
    /// 对称加密类的构造函数
    /// </summary>
    public Secret()//默认构造函数 用默认的key, 和iv加密
    {
    mobjCryptoService = new RijndaelManaged();
    Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
    iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
    }
    public Secret(string key)//用默认的iv加密,带参数 key
    {   mobjCryptoService = new RijndaelManaged();
    if(key==null||key=="")
    {
    Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
    }
    else
    {
    Key = key;
    iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
    }
    } public Secret(string key,string iv)//带  iv  和 key参数的构造函数
    {    mobjCryptoService = new RijndaelManaged();
    if(key==null||key=="")

    Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
     
    else
                  Key = key;
     if(iv==null||iv=="")

    iv = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";

    else
     

    this.iv=iv;
    }
    /// <summary>
    /// 获得密钥
    /// </summary>
    /// <returns>密钥</returns> private byte[] GetLegalKey()//检查并生成合法的密钥
    {
    string sTemp = Key;

    if (sTemp.Length > 32)
    sTemp = sTemp.Substring(0, 32);
    else if (sTemp.Length < 32)
    sTemp = sTemp.PadRight(32, ' ');
    return ASCIIEncoding.ASCII.GetBytes(sTemp);
    } /// <summary>
    /// 获得初始向量IV
    /// </summary>
    /// <returns>初试向量IV</returns>
    private byte[] GetLegalIV()//检查并生成合法的初始化向量
    {

    string sTemp = iv;
    if (sTemp.Length > 16)
    sTemp = sTemp.Substring(0, 16);
    else if (sTemp.Length < 16)
    sTemp = sTemp.PadRight(16, ' ');
    return ASCIIEncoding.ASCII.GetBytes(sTemp);
    }
    /// <summary>
    /// 加密方法
    /// </summary>
    /// <param name="Source">待加密的串</param>
    /// <returns>经过加密的串</returns>
    public string Encrypto(string Source)
    { if (Source=="") return null;
    if(Source==null)return null;
    byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
    MemoryStream ms = new MemoryStream();
    mobjCryptoService.Key = GetLegalKey();
    mobjCryptoService.IV = GetLegalIV();
    ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
    CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
    cs.Write(bytIn, 0, bytIn.Length);
    cs.FlushFinalBlock();
    ms.Close();
    byte[] bytOut = ms.ToArray();
    return Convert.ToBase64String(bytOut);
    }
    /// <summary>
    /// 解密方法
    /// </summary>
    /// <param name="Source">待解密的串</param>
    /// <returns>经过解密的串</returns>
    public string Decrypto(string Source)
    {
    if (Source=="") return null;
    if(Source==null)return null;
    byte[] bytIn = Convert.FromBase64String(Source);
    MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
    mobjCryptoService.Key = GetLegalKey();
    mobjCryptoService.IV = GetLegalIV();
    ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
    CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(cs);
    return sr.ReadToEnd();
    } public string KEY{//用此属性来修改key
    get{
                    
    return Key;
    }
    set{ if(value!=null||value!="")
                     Key=value;
    else
    Key="Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7"; }



    } public string IV//用此属性来修改iv
    {
    get
    {return iv;
    }
    set
    {
    if(value!=null||value!="")
    iv=value;
    else
    iv="E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
    }



    } }
    ///////////////////////////////////////////////new class
    public class Scripter
    {
    public Scripter()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public static string  Write(string code)
    {
    //trim(code);
    code=code.Trim();
    code=code.Replace(" ","");
    code=code.Replace("\"","\'");
                code=code.Replace("\n",""); 
                code=code.Replace("\r","");
    return (HttpUtility.HtmlEncode(code));
    } }
    }