ASP学习:urldecode 方法补遗

  • 来源: 互联网 作者: rocket   2008-03-24/10:55
  •  asp 里面没有urldecode函数,好象aspx里有吧,我不太清楚,但asp里面还是用得很多。在网上查找了有别人写的urldecode函数,但是这个函数有错误,而且在一些方面写得比较难理解。而且有错误,当里面有生僻双字节文字时就会产生错误,如“乄”经urlencoder后为“%81W”,解码就不能成功。

      其实双字节编码在这里只要把"W"也编成16进制ASC码就可以。

      知识点:计算机里的cookie也是经过urlencode编码的,所以urldecode对破解cookie也很有用呵。

      下面是源代码:

      Function URLDecode(enStr)
      dim deStr
      dim c,i,v
      deStr=""
      for i=1 to len(enStr)
      c=Mid(enStr,i,1)
      if c="%" then
      v=eval("&h"+Mid(enStr,i+1,2))
      if v<128 then
      deStr=deStr&chr(v)
      i=i+2
      else
      if isvalidhex(mid(enstr,i,3)) then
      if isvalidhex(mid(enstr,i+3,3)) then
      v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
      deStr=deStr&chr(v)
      i=i+5
      else
      v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
      deStr=deStr&chr(v)
      i=i+3
      end if
      else
      destr=destr&c
      end if
      end if
      else
      if c="+" then
      deStr=deStr&" "
      else
      deStr=deStr&c
      end if
      end if
      next
      URLDecode=deStr
      end function

      function isvalidhex(str)
      isvalidhex=true
      str=ucase(str)
      if len(str)<>3 then isvalidhex=false:exit function
      if left(str,1)<>"%" then isvalidhex=false:exit function
      c=mid(str,2,1)
      if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
      c=mid(str,3,1)
      if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
      end function

      你用此方法解码“%81W”看看,可以了。

      当然,你还可以玩点小段,使之成为自己的一种字符串加密方式。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多