ASP學(xué)習(xí):urldecode 方法補(bǔ)遺
發(fā)表時(shí)間:2023-08-13 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]asp 里面沒有urldecode函數(shù),好象aspx里有吧,我不太清楚,但asp里面還是用得很多。在網(wǎng)上查找了有別人寫的urldecode函數(shù),但是這個(gè)函數(shù)有錯(cuò)誤,而且在一些方面寫得比較難理解。而且...
asp 里面沒有urldecode函數(shù),好象aspx里有吧,我不太清楚,但asp里面還是用得很多。在網(wǎng)上查找了有別人寫的urldecode函數(shù),但是這個(gè)函數(shù)有錯(cuò)誤,而且在一些方面寫得比較難理解。而且有錯(cuò)誤,當(dāng)里面有生僻雙字節(jié)文字時(shí)就會(huì)產(chǎn)生錯(cuò)誤,如“乄”經(jīng)urlencoder后為“%81W”,解碼就不能成功。
其實(shí)雙字節(jié)編碼在這里只要把"W"也編成16進(jìn)制ASC碼就可以。
知識(shí)點(diǎn):計(jì)算機(jī)里的cookie也是經(jīng)過urlencode編碼的,所以u(píng)rldecode對(duì)破解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”看看,可以了。
當(dāng)然,你還可以玩點(diǎn)小段,使之成為自己的一種字符串加密方式。