<%  if request.Cookies("userid")<>"" then
  Set DesCrypt = New Cls_DES
  dim strKey
  strKey=Second(time())&""&minute(time())&""&Second(time())&""&Second(time())*13&""&minute(time())*Second(time())*17&""&"ACE"&""&hour(now())*year(now())+1000&" FDEE"&"12"
  strKey=left(strKey,14)&""
 'response.Write(strKey)   
  dim strURLs
  strURLs=""&strKey&"&"&request.Cookies("userid")&"&"&DesCrypt.DES(request.Cookies("userid"),strKey,0)&"&"&now()&"&"&request.ServerVariables("REMOTE_ADDR")
 'response.Write(strURLs)  
  dim strURL
  strURL=DesCrypt.DES(strURLs,"0EFc9A7BE44876",0)
 'response.Write(strURL)  
  end if
  %>index.asp 传值代码

解决方案 »

  1.   

    <% Class Cls_DES
         Private IPRule, CPRule, EPRule, PRule, SBox(7), PCRule(1), MvRule
         Private K(16), L(16), R(16)
         Private FillCode, DesStatus
        
         Private Sub Class_Initialize()
             DesStatus = -1
             FillCode = "0001101"
             IPRule = "58,50,42,34,26,18,10,2," &_
                 "60,52,44,36,28,20,12,4," &_
                 "62,54,46,38,30,22,14,6," &_
                 "64,56,48,40,32,24,16,8," &_
                 "57,49,41,33,25,17, 9,1," &_
                 "59,51,43,35,27,19,11,3," &_
                 "61,53,45,37,29,21,13,5," &_
    <!--。加密嘛,太多省略-->
         Private Function KeyReverse()
             Dim Temp, i
             For i = 1 To 8
                 Temp = K(i)
                 K(i) = K(16 - i + 1)
                 K(16 - i + 1) = Temp
             Next
         End Function
        
         Public Function DES(ByVal Data, ByVal Keys, ByVal Work)
             Dim Text, i, Group, GroupLen
             Text = Data
             K(0) = HexToBinary(Keys)
             If Work = 0 Then
                 Text = StrToBinary(Text)
             Else
                 Text = HexToBinary(Text)
             End If
             GroupLen = Len(Text) \ 64 - 1
             ReDim Group(GroupLen)
             For i = 0 To GroupLen
                 Group(i) = Mid(Text, i * 64 + 1, 64)
             Next
             Text = ""
             CreateKey()
             For i = 0 To GroupLen
                 IP(Group(i))
                 If Work <> 0 And DesStatus <> 1 Then
                     KeyReverse()
                     DesStatus = 1
                 ElseIf Work = 0 And DesStatus = 1 Then
                     KeyReverse()
                     DesStatus = 0
                 End If
                 IterativeLR()
                 Text = Text & Permute(CPRule, R(16) & L(16))
             Next
             Erase Group
             If Work = 0 Then
                 Text = BinaryToHex(Text)
             Else
                 Text = BinaryToStr(Text)
             End If         DES = Text
         End Function
    End Class %>
    <% function strToHex(strValue)
     dim strTemp
     dim i
     strTemp=""
     for i=1 to len(strValue & "")
      strTemp=strTemp & hex(asc(mid(strValue,i,1)))
     next
    strToHex=strTemp
    end function 
    strRes=request("key")
    strKey=request("skey")
    Set DesCrypt = New Cls_DES
    if strRes<>"" and strKey<>"" then 
    strURL=DesCrypt.DES(strRes,strKey,1)
    response.Write(strurl)
    else
    strKey=Second(time())&""&minute(time())&""&Second(time())&""&Second(time())*13&""&minute(time())*Second(time())*17&""&"ACE"&""&hour(now())*year(now())+1000&" FDEE"&"12"
      strKey=left(strKey,14)&""
      strURLs=""&strKey&"&"&now()&"&"&request.ServerVariables("REMOTE_ADDR")
    response.Redirect("index.asp?URL="&DesCrypt.DES(strURLs,strKey,0))
    end if
    %>web_des.asp DES加密页
      

  2.   


    public  class PageUrlz:System.Web.UI.Page
    {
        public PageUrlz()
        {
            if (!Page.IsPostBack)
            {
                HttpRequest req = Context.Request;
                HttpResponse resp = Context.Response;
                string strUrl = req.RawUrl;
                if ((req.RawUrl.IndexOf('?') == -1 || req.RawUrl.IndexOf('?') == req.RawUrl.Length - 1) && strUrl.ToLower().IndexOf("downfile.aspx") == -1)
                {
                    string strWebURL = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">非法访问,5秒后转回首页</font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                    resp.Write(strWebURL);
                    resp.End();
                }
                else //读取ASP页面取值
                {
                    if (strUrl.ToLower().IndexOf("downfile.aspx") == -1)
                    {
                        strUrl = strUrl.Substring(strUrl.IndexOf('?') + 1);
                        string strURlR = "key=" + strUrl + "&skey=0EFc9A7BE44876";
                        string strUR = "http://192.168.0.1/web_des.asp";
                        string strHTML = "";
                        try
                        {
                            //resp.Write(strURlR);
                            //resp.Write(strUR);
                            strHTML = GreateWebRequest(strURlR, strUR);
                        }
                        catch
                        {
                            string strWebURLs = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">非法访问,为了保证数据安全请从首页点击进入 5秒后转回首页 </font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                           
                            resp.Write(strWebURLs);
                            resp.End();
                        }
                        string[] strs = strHTML.Replace("<html>", "").Replace("\r", "").Replace("\n", "").Replace("</body></html>", "").Split('&');
                        string strIP = Context.Request.ServerVariables["REMOTE_ADDR"];
                        if (strIP == null)
                        {
                            strIP = "";
                        }                    if (strIP.Trim() != strs[4].Trim())
                        {
                            string strWebURLs = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">非法访问,为了保证数据安全请从首页点击进入 5秒后转回首页 </font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                            resp.Write(strWebURLs);
                            resp.End();
                        }
                        else if (Convert.ToDateTime(strs[3]).AddHours(0.3) < DateTime.Now)
                        {
                            string strWebURLs = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">你可能长时间没有操作,为了保证数据安全5秒后转回首页!<BR>请您重新登入并浏览 </font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                            resp.Write(strWebURLs);
                            resp.End();
                        }
                        else
                        {
                            string strURlRs = "key=" + strs[2] + "&skey=" + strs[0];
                            string strWe = "";
                            try
                            {
                                strWe = GreateWebRequest(strURlRs, strUR).Replace("<html>", "").Replace("\r", "").Replace("\n", "").Replace("</body></html>", "");
                            }
                            catch
                            {
                                string strWebURLs = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">非法访问,5秒后转回首页</font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                                resp.Write(strWebURLs);
                                resp.End();
                            }
                            //resp.Write(strWe);
                            if (strWe != strs[1])
                            {
                                string strWebURLs = "<font style=\"font-size:14px; color:#F00;\"color=\"red\" size=\"14px\">非法访问,5秒后转回首页</font><script>setTimeout(function(){window.location.href='index.asp';},5000);</script>";
                                resp.Write(strWebURLs);                            resp.End();
                            }
                        }
                    }
                }
            }
        }
        public string GreateWebRequest(string strPu, string strURL)
        {
            HttpRequest req = Context.Request;
            HttpResponse resp = Context.Response;
            string strURlR = strPu;// "key=" + strUrl + "&skey=0EFc9A7BE44876";
            byte[] by = System.Text.Encoding.GetEncoding("Gb2312").GetBytes(strURlR);
            string strWebURL = strURL; 
            HttpWebRequest hwrt = (HttpWebRequest)WebRequest.Create(strWebURL);
            //resp.Write(strURlR+"<br>");
            hwrt.Method = "Post";
            hwrt.ContentType = "application/x-www-form-urlencoded";
            hwrt.ContentLength = by.Length;
            hwrt.KeepAlive = false;
            hwrt.ProtocolVersion = HttpVersion.Version10;
            Stream str = hwrt.GetRequestStream();
            str.Write(by, 0, by.Length);
            str.Flush();
            str.Close();
            HttpWebResponse hwrp = (HttpWebResponse)hwrt.GetResponse();
            StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
            string strHTML = srrd.ReadToEnd();
            //resp.Write(strHTML);
            //resp.End();
            return strHTML;
            
        }
        
    }PageUrlz.cs .NET子页显示首页传入的值
    这个是2个页面传值,其中用web_des页过度一下,但是现在出现了一个问题就是传值后PageUrlz.cs页得strHTML取到的值会是乱码|U1zn# dT HzjjZX>mW:X([}/&_rPn6ZzRew:#=vM 2
    小弟弄了很长时间,但是也没什么头绪,请高手们看一看啊
      

  3.   

    编码问题 byte[] by = System.Text.Encoding.Default.GetBytes(strURlR);
      

  4.   

           StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.Default);
      

  5.   

    你这 Cookies 传值啊。若该页面是第一个要访问的,那么应该是“记住用户信息”选项使用的,以完成“自动登录”。
      

  6.   

    你这个函数用的可是GB啊:
    string GreateWebRequest(string strPu, string strURL)
        {
            HttpRequest req = Context.Request;
            HttpResponse resp = Context.Response;
            string strURlR = strPu;// "key=" + strUrl + "&skey=0EFc9A7BE44876";
            byte[] by = System.Text.Encoding.GetEncoding("Gb2312").GetBytes
      

  7.   


        public string GreateWebRequest(string strPu, string strURL)
        {
            HttpRequest req = Context.Request;
            HttpResponse resp = Context.Response;
            string strURlR = strPu;// "key=" + strUrl + "&skey=0EFc9A7BE44876";
           // byte[] by = System.Text.Encoding.GetEncoding("Gb2312").GetBytes(strURlR);
            byte[] by = System.Text.Encoding.Default.GetBytes(strURlR);
            string strWebURL = strURL; 
            HttpWebRequest hwrt = (HttpWebRequest)WebRequest.Create(strWebURL);
            //resp.Write(strURlR+"<br>");
            hwrt.Method = "Post";
            hwrt.ContentType = "application/x-www-form-urlencoded";
            hwrt.ContentLength = by.Length;
            hwrt.KeepAlive = false;
            hwrt.ProtocolVersion = HttpVersion.Version10;
            Stream str = hwrt.GetRequestStream();
            str.Write(by, 0, by.Length);
            str.Flush();
            str.Close();
            HttpWebResponse hwrp = (HttpWebResponse)hwrt.GetResponse();
            //StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
            StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.Default);
            string strHTML = srrd.ReadToEnd();
            resp.Write(strHTML);
            //resp.End();
            return strHTML;
            
        }改后依然乱码
    *!~n6vc{ 
      

  8.   

    接收乱码,多半是编码问题,一般都是传递中文时,出现乱码。统一采用HTML编码,编码,解码。
      

  9.   

    恩,这个我也知道,但是问题是现在通过web_des页后取到的内容直接乱了,改写
    System.Text.Encoding.GetEncoding("Gb2312").GetBytes(strURlR);
    也看不出有什么效果,望高手们分析一下后给出个解决方法。。
      

  10.   

    是那部分出的错呢?PageUrlz.cs 页面取值有问题吗?编码错在哪里呢?
      

  11.   

    StreamReader reader = new StreamReader(inputFilePath, System.Text.Encoding.ASCII, true)还是编码。
      

  12.   

    StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.ASCII, true);
    依然还是不行,直接输出ASCII好像不行。
    只有取到正常明文值才可以显示出来。
      

  13.   

    一定是编码问题吗?页面转换会不会也出了问题呢?
            //resp.Write(strURlR+"<br>");
            hwrt.Method = "Post";
            hwrt.ContentType = "application/x-www-form-urlencoded";
            hwrt.ContentLength = by.Length;
            hwrt.KeepAlive = false;
            hwrt.ProtocolVersion = HttpVersion.Version10;
            Stream str = hwrt.GetRequestStream();
            str.Write(by, 0, by.Length);
            str.Flush();
            str.Close();
            HttpWebResponse hwrp = (HttpWebResponse)hwrt.GetResponse();
            StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
            string strHTML = srrd.ReadToEnd();
      

  14.   

     StreamReader srrd = new StreamReader(hwrp.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
            使用 UTF-8 编码试试
      

  15.   


    嗯,最早我就先实验的UTF-8,但是可惜还是不好用,我怀疑可能是
    string strUR = "http://192.168.0.1/web_des.asp";
    页传过来时的问题,在web_des.asp时就已经做了一次
    response.Redirect("index.asp?URL="&DesCrypt.DES(strURLs,strKey,0))
    编码,乱成那样有没有可能是这个东西给搞的呢?
      

  16.   

    在输出哪里我加了一个
    resp.Write(System.Text.Encoding.GetEncoding("GB2312").GetBytes(strHTML));
    然后输出了
    System.Byte[]
      

  17.   

    你应该设置asp页面输出的编码格式,然后在.aspx页用相应的编码格式解码关于DesCrypt.DES 这个函数,只是对url中的参数进行了处理
      

  18.   

    用HttpUtility.UrlEncode(传入的值)编码,   然后用HttpUtility.UrlDecode()格式进行解码