.net URL传参加密处理

记得前段时间看到过一个关于淘宝URL加密的方法,但现在忘记了,今天有点时间所以自己写了一个用哈希表来处理URL参数的方法。
首先想到的当然是序列化,所以做了以下测试;
 1      public   partial   class  Test : System.Web.UI.Page
 2 ExpandedBlockStart.gifContractedBlock.gif     {
 3        Table dt = new Table();
 4        public delegate void ForMatEventHandler(string key, string value);
 5        protected void Page_Load(object sender, EventArgs e)
 6ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 7            dt.Width =Unit.Parse("500px");
 8            dt.CellPadding = 2;
 9            dt.CellSpacing = 1;
10            dt.BorderWidth = 0;
11            dt.BackColor = Color.FromName("#ccc");
12
13            Hashtable hat = new Hashtable();
14            Hashtable hat2 = new Hashtable();
15            ForMatter(hat, AddRow);
16            ForMatter(hat2, AddRow);
17            hat.Add("1""abcdef");
18            ForMatter(hat, AddRow);
19            hat2.Add("城市""北京");
20            ForMatter(hat2, AddRow);
21            hat.Add("acd""defahefighsl");
22            ForMatter(hat, AddRow);
23            hat2.Add("地区""石景山区");
24            ForMatter(hat2, AddRow);
25            Page.Controls.Add(dt);
26        }

27        public void ForMatter(object obj, ForMatEventHandler eves)
28ExpandedSubBlockStart.gifContractedSubBlock.gif        {
29            System.IO.MemoryStream ms = new System.IO.MemoryStream();
30            IFormatter format = new BinaryFormatter();
31            format.Serialize(ms, obj);
32            ms.Position = 0;
33            byte[] bys = new byte[ms.Length];
34            ms.Read(bys, 0, (int)ms.Length);
35            if (eves != null)
36ExpandedSubBlockStart.gifContractedSubBlock.gif            {
37                eves(obj.GetHashCode().ToString(), Convert.ToBase64String(bys));
38            }

39            ms.Close();
40            ms.Dispose();
41        }

42        public void AddRow(string key, string value)
43ExpandedSubBlockStart.gifContractedSubBlock.gif        {
44            dt.Rows.Add(new TableRow());
45ExpandedSubBlockStart.gifContractedSubBlock.gif            dt.Rows[dt.Rows.Count - 1].Cells.Add(new TableCell() { Text = key, BackColor = Color.White });
46ExpandedSubBlockStart.gifContractedSubBlock.gif            dt.Rows[dt.Rows.Count - 1].Cells.Add(new TableCell() { Text = value, BackColor = Color.White });
47        }

48    }

49

浏览页发可以看到以下内容:
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAAAAAAQAwAAAAAAAAAL
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AQAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAEAAAAGBAAAAAExEAMAAAABAAAABgUAAAAGYWJjZGVmCw==
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AQAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAEAAAAGBAAAAAbln47luIIQAwAAAAEAAAAGBQAAAAbljJfkuqwL
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AgAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAIAAAAGBAAAAANhY2QGBQAAAAExEAMAAAACAAAABgYAAAAMZGVmYWhlZmlnaHNsBgcAAAAGYWJjZGVmCw==
System.Collections.HashtableAAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tcGFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVyJFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AgAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAAIAAAAGBAAAAAblnLDljLoGBQAAAAbln47luIIQAwAAAAIAAAAGBgAAAAznn7Pmma/lsbHljLoGBwAAAAbljJfkuqwL

其实从上面的数字可以看出哈希表序列化后前面的那一部分代码是一样的,所以我们没有必要把这些拿去传输,再说太找的URL也不好吧,所以我就使用了。。。
ContractedBlock.gif ExpandedBlockStart.gif Code
        Hashtable qList;
        String parms;
        
private readonly string hatFormatHead = "AAEAAAD/AQAAAAAAAAAEAQAAABxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlBwAAAApMb2FkRmFjdG9yB1ZlcnNpb24IQ29tc"
                                              
+ "GFyZXIQSGFzaENvZGVQcm92aWRlcghIYXNoU2l6ZQRLZXlzBlZhbHVlcwAAAwMABQULCBxTeXN0ZW0uQ29sbGVjdGlvbnMuSUNvbXBhcmVy"
                                              
+ "JFN5c3RlbS5Db2xsZWN0aW9ucy5JSGFzaENvZGVQcm92aWRlcgjsUTg/AAAAAAoKCwAAAAkCAAAACQMAAAAQAgAAAA";
        
public Hashtable QueryList
        {
            
get
            {
                
if (qList == null)
                {
                    qList 
= new Hashtable();
                    
string parm = Request.QueryString["Parm"];
                    
if (!String.IsNullOrEmpty(parm))
                    {
                        
try
                        {
                            
byte[] parms = Convert.FromBase64String(hatFormatHead + parm);

                             System.IO.MemoryStream stream 
= new System.IO.MemoryStream();
                            stream.Write(parms, 
0, parms.Length);
                            IFormatter format 
= new BinaryFormatter();
                            stream.Position 
= 0;
                            qList 
= (Hashtable)format.Deserialize(stream);

                            stream.Close();
                            stream.Dispose();
                        }
                        
catch { }

                    }
                    
foreach (string item in Request.QueryString.AllKeys)
                    {
                        
if (item == "Parm"continue;
                        
if (qList.ContainsKey(item))
                        {
                            qList[item] 
= Request.QueryString[item];
                        }
                        
else
                        {
                            qList.Add(item, Request.QueryString[item]);
                        }
                    }
                }
                
return qList;
            }
            
set { qList = value; }
        }

        
public string QueryParm
        {
            
get
            {

                
if (parms == null)
                {

                    
if (QueryList.Count < 1)
                    {
                        
return "";
                    }
                    System.IO.MemoryStream stream 
= new System.IO.MemoryStream();
                    IFormatter format 
= new BinaryFormatter();
                    format.Serialize(stream, QueryList);
                    stream.Position 
= 0;
                    
byte[] parmsb = new byte[stream.Length];
                    stream.Read(parmsb, 
0, (int)stream.Length);
                    stream.Close();
                    stream.Dispose();
                    parms 
= Convert.ToBase64String(parmsb);
                    
if (parms.Length > hatFormatHead.Length)
                    {
                        parms 
= parms.Substring(hatFormatHead.Length);
                    }
                }
                
return parms;
            }
        }

转载于:https://www.cnblogs.com/xy109/articles/1565735.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值