对网站地址进行加密

来源:互联网 发布:股票交易记录软件 编辑:程序博客网 时间:2024/05/24 07:24

  对网址加密:
     第一步:.先添加一个UITools类,对网址进行加密和机密
       这个类可以为类中类 如:

        
public class UITools
{
    public class Security
    {
        const string KEY_64 = "VavicApp";
        const string IV_64 = "VavicApp"; //注意了,是8个字符,64位

      

        public static string Encode(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);

        }

        public static string Decode(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 null;
            }

            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();
        }
    }

}
   第二步:
   在项目中的webconfig中配置:
    1.在<configSections>下配置
  <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
    2. 将这个配置添加在<appSettings/>下

 <RewriterConfig>
  <Rules>
   <RewriterRule>
    <LookFor>~/House(/d+)/.aspx</LookFor>  //加密后的地址
    <SendTo>~/Detail.aspx?ID=$1</SendTo>   //解密后的地址样式
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/book(/d+)/.html</LookFor>  //捕获到这样的url修改成下面样式的地址
    <SendTo>~/ShowBook.aspx?ID=$1</SendTo>
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/book_(.*)/.html</LookFor>
    <SendTo>~/ShowBook2.aspx?key=$1</SendTo>
   </RewriterRule>
  </Rules>
 </RewriterConfig>
    3.在<httpModules>中添加配置
   <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
   第三步:
        添加引用URLRewriter.dll文件
   第四步:
    在页面中对<a>进行处理
   如:<a href='<%#EnCode(Eval("Id"))%>'>详细</a>
     a:其中 EnCode()为页面后台的一个方法,将标示id传过去在方法中调用UITOOLS方法中的encode加密方法进行加密
如:
   public string EnCode(object o)
    {
        return "Book_" + Server.UrlEncode(UITools.Security.Encode(o.ToString()).Replace("+",                 "+")) + ".html";
    }
     b:在url地址传送过程中被模板配置中的<RewriterRule>
    <LookFor>~/book_(.*)/.html</LookFor>
    <SendTo>~/ShowBook2.aspx?key=$1</SendTo>
   </RewriterRule>
       截获对url进行重写为~/ShowBook2.aspx?key=$1 在showbook页面中的load方法中对加密后的标示进行解密  如:
        string key = Server.UrlDecode(Request["key"]).Replace("+", "+");
        //Response.Write(key);
        string id=UITools.Security.Decode(key);
        //Response.Write(id);
        Server.Execute("~/ShowBook.aspx?id=" + id);
        Response.End();
     


/////完成加密OK
    
    
  

原创粉丝点击