专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Asp教程 » 验证码程序:一个很简单的验证码程序 »正文

验证码程序:一个很简单的验证码程序

来源: 发布时间:星期四, 2009年2月12日 浏览:390次 评论:0


共 3个

方式 <script language=\"javascript\" src=\"/very/num.asp\"></script>
验证方式 trim(Loginnum)<>trim(session(\"Loginnum\")) then
Response.Write Error(\"验证码!\")
Response.End
end


num.asp

<%
\'### To encrypt/decrypt this code in your page
\'### strMyEncryptedString = EncryptString(strString)
\'### strMyDecryptedString = DeCryptString(strMyEncryptedString)
\'### You are free to use this code as long as credits re in place
\'### also you improve this code let me know.

Private Function EncryptString(strString)
\'####################################################################
\'### Crypt Function ? 2001 by Slavic Kozyuk [email protected] ###
\'### Arguments: strString <--- String you wish to encrypt ###
\'### Output: Encrypted HEX ###
\'####################################################################

Dim CharHexSet, StringLen, strTemp, strRAW, I, Key, OffSet
Randomize Timer

Key = Round((RND * 1000000) + 1000000) \'##### Key Bitsize
OffSet = Round((RND * 1000000) + 1000000) \'##### KeyOffSet Bitsize

If IsNull(strString) = False Then
strRAW = strString
StringLen = Len(strRAW)

For i = 0 to StringLen - 1
strTemp = Left(strRAW, 1)
strRAW = Right(strRAW, Len(strRAW) - 1)
CharHexSet = CharHexSet & Hex(Asc(strTemp) * Key)& Hex(Key)
Next

EncryptString = CharHexSet & \"|\" & Hex(OffSet + Key) & \"|\" & Hex(OffSet)
Else
EncryptString = \"\"
End If
End Function




Private Function DeCryptString(strCryptString)
\'####################################################################
\'### Crypt Function ? 2001 by Slavic Kozyuk [email protected] ###
\'### Arguments: Encrypted HEX t ###
\'### Output: Decrypted ASCII ###
\'####################################################################
\'### Note this function uses HexConv and get_hxno functions ###
\'### so make sure they are not removed ###
\'####################################################################

Dim strRAW, arHexCharSet, I, Key, OffSet, strRawKey, strHexCrypData


strRawKey = Right(strCryptString, Len(strCryptString) - InStr(strCryptString, \"|\"))
OffSet = Right(strRawKey, Len(strRawKey) - InStr(strRawKey,\"|\"))
Key = HexConv(Left(strRawKey, InStr(strRawKey, \"|\") - 1)) - HexConv(OffSet)
strHexCrypData = Left(strCryptString, Len(strCryptString) - (Len(strRawKey) + 1))


arHexCharSet = Split(strHexCrypData, Hex(Key))

For i=0 to Ubound(arHexCharSet)
strRAW = strRAW & Chr(HexConv(arHexCharSet(i))/Key)
Next

DeCryptString = strRAW
End Function



Private Function HexConv(hexVar)
Dim hxx, hxx_var, multiply
IF hexVar <> \"\" THEN
hexVar = UCASE(hexVar)
hexVar = StrReverse(hexVar)
DIM hx
REDIM hx(LEN(hexVar))
hxx = 0
hxx_var = 0
FOR hxx = 1 TO LEN(hexVar)
IF multiply = \"\" THEN multiply = 1
hx(hxx) = mid(hexVar,hxx,1)
hxx_var = (get_hxno(hx(hxx)) * multiply) + hxx_var
multiply = (multiply * 16)
NEXT
hexVar = hxx_var
HexConv = hexVar
END IF
End Function

Private Function get_hxno(ghx)
If ghx = \"A\" Then
ghx = 10
ElseIf ghx = \"B\" Then
ghx = 11
ElseIf ghx = \"C\" Then
ghx = 12
ElseIf ghx = \"D\" Then
ghx = 13
ElseIf ghx = \"E\" Then
ghx = 14
ElseIf ghx = \"F\" Then
ghx = 15
End If
get_hxno = ghx
End Function

randomize
num = (7999*rnd+2000) \'计数器
num2 = EncryptString(num)
session(\"Loginnum\")=num
%>
document.write(\"<img src=\'/very/count.asp?sksid=<%=num2%>\'>\") \' 这里是图片路径

count.asp


<!--# file=\"numimg.asp\"-->

<%
\'### To encrypt/decrypt this code in your page
\'### strMyEncryptedString = EncryptString(strString)
\'### strMyDecryptedString = DeCryptString(strMyEncryptedString)
\'### You are free to use this code as long as credits re in place
\'### also you improve this code let me know.

Private Function EncryptString(strString)
\'####################################################################
\'### Crypt Function ? 2001 by Slavic Kozyuk [email protected] ###
\'### Arguments: strString <--- String you wish to encrypt ###
\'### Output: Encrypted HEX ###
\'####################################################################

Dim CharHexSet, StringLen, strTemp, strRAW, I, Key, OffSet
Randomize Timer

Key = Round((RND * 1000000) + 1000000) \'##### Key Bitsize
OffSet = Round((RND * 1000000) + 1000000) \'##### KeyOffSet Bitsize

If IsNull(strString) = False Then
strRAW = strString
StringLen = Len(strRAW)

For i = 0 to StringLen - 1
strTemp = Left(strRAW, 1)
strRAW = Right(strRAW, Len(strRAW) - 1)
CharHexSet = CharHexSet & Hex(Asc(strTemp) * Key)& Hex(Key)


Next

EncryptString = CharHexSet & \"|\" & Hex(OffSet + Key) & \"|\" & Hex(OffSet)
Else
EncryptString = \"\"
End If
End Function




Private Function DeCryptString(strCryptString)
\'####################################################################
\'### Crypt Function ? 2001 by Slavic Kozyuk [email protected] ###
\'### Arguments: Encrypted HEX t ###
\'### Output: Decrypted ASCII ###
\'####################################################################
\'### Note this function uses HexConv and get_hxno functions ###
\'### so make sure they are not removed ###
\'####################################################################

Dim strRAW, arHexCharSet, I, Key, OffSet, strRawKey, strHexCrypData


strRawKey = Right(strCryptString, Len(strCryptString) - InStr(strCryptString, \"|\"))
OffSet = Right(strRawKey, Len(strRawKey) - InStr(strRawKey,\"|\"))
Key = HexConv(Left(strRawKey, InStr(strRawKey, \"|\") - 1)) - HexConv(OffSet)
strHexCrypData = Left(strCryptString, Len(strCryptString) - (Len(strRawKey) + 1))


arHexCharSet = Split(strHexCrypData, Hex(Key))

For i=0 to Ubound(arHexCharSet)
strRAW = strRAW & Chr(HexConv(arHexCharSet(i))/Key)
Next

DeCryptString = strRAW
End Function



Private Function HexConv(hexVar)
Dim hxx, hxx_var, multiply
IF hexVar <> \"\" THEN
hexVar = UCASE(hexVar)
hexVar = StrReverse(hexVar)
DIM hx
REDIM hx(LEN(hexVar))
hxx = 0
hxx_var = 0
FOR hxx = 1 TO LEN(hexVar)
IF multiply = \"\" THEN multiply = 1
hx(hxx) = mid(hexVar,hxx,1)
hxx_var = (get_hxno(hx(hxx)) * multiply) + hxx_var
multiply = (multiply * 16)
NEXT
hexVar = hxx_var
HexConv = hexVar
END IF
End Function

Private Function get_hxno(ghx)
If ghx = \"A\" Then
ghx = 10
ElseIf ghx = \"B\" Then
ghx = 11
ElseIf ghx = \"C\" Then
ghx = 12
ElseIf ghx = \"D\" Then
ghx = 13
ElseIf ghx = \"E\" Then
ghx = 14
ElseIf ghx = \"F\" Then
ghx = 15
End If
get_hxno = ghx
End Function


%>


<%
Dim Image
Dim Width, Height
Dim num
Dim digtal
Dim Length
Dim sort
Length = 4 \'自定计数器长度

Redim sort( Length )

num=c(DeCryptString(request.query(\"sksid\")))
digital = \"\"
For I = 1 To Length -Len( num ) \'补0
digital = digital & \"0\"
Next
For I = 1 To Len( num )
digital = digital & Mid( num, I, 1 )
Next
For I = 1 To Len( digital )
sort(I) = Mid( digital, I, 1 )
Next
Width = 8 * Len( digital ) \'图像宽度
Height = 10 \'图像高度在本例中为固定值


Response.ContentType=\"image/x-xbitmap\"

hc=chr(13) & chr(10)

Image = \"# counter_width \" & Width & hc
Image = Image & \"# counter_height \" & Height & hc
Image = Image & \" unsigned char counter_bits={\" & hc

For I = 1 To Height
For J = 1 To Length
Image = Image & a(sort(J),I) & \",\"
Next
Next

Image = Left( Image, Len( Image ) - 1 ) \'去掉最后个逗号
Image = Image & \"};\" & hc
%>
<%
Response.Write Image

%>



numimg.asp



<%
Dim a(10,10)

a(0,1) = \"0x3c\" \'数字0
a(0,2) = \"0x66\"
a(0,3) = \"0xc3\"
a(0,4) = \"0xc3\"
a(0,5) = \"0xc3\"
a(0,6) = \"0xc3\"
a(0,7) = \"0xc3\"
a(0,8) = \"0xc3\"
a(0,9) = \"0x66\"
a(0,10)= \"0x3c\"

a(1,1) = \"0x18\" \'数字1
a(1,2) = \"0x1c\"
a(1,3) = \"0x18\"
a(1,4) = \"0x18\"
a(1,5) = \"0x18\"
a(1,6) = \"0x18\"
a(1,7) = \"0x18\"
a(1,8) = \"0x18\"
a(1,9) = \"0x18\"
a(0,10)= \"0x7e\"


a(2,1) = \"0x3c\" \'数字2
a(2,2) = \"0x66\"
a(2,3) = \"0x60\"
a(2,4) = \"0x60\"
a(2,5) = \"0x30\"
a(2,6) = \"0x18\"
a(2,7) = \"0x0c\"
a(2,8) = \"0x06\"
a(2,9) = \"0x06\"
a(2,10)= \"0x7e\"

a(3,1) = \"0x3c\" \'数字3
a(3,2) = \"0x66\"
a(3,3) = \"0xc0\"
a(3,4) = \"0x60\"
a(3,5) = \"0x1c\"
a(3,6) = \"0x60\"
a(3,7) = \"0xc0\"
a(3,8) = \"0xc0\"
a(3,9) = \"0x66\"
a(3,10)= \"0x38\"

a(4,1) = \"0x38\" \'数字4
a(4,2) = \"0x3c\"
a(4,3) = \"0x36\"
a(4,4) = \"0x33\"
a(4,5) = \"0x33\"
a(4,6) = \"0x33\"
a(4,7) = \"0xff\"
a(4,8) = \"0x30\"
a(4,9) = \"0x30\"
a(4,10)= \"0xfe\"

a(5,1) = \"0xfe\" \'数字5
a(5,2) = \"0xfe\"
a(5,3) = \"0x06\"
a(5,4) = \"0x06\"
a(5,5) = \"0x3e\"
a(5,6) = \"0x60\"
a(5,7) = \"0xc0\"
a(5,8) = \"0xc3\"
a(5,9) = \"0x66\"
a(5,10)= \"0x3c\"

a(6,1) = \"0x60\" \'数字6
a(6,2) = \"0x30\"
a(6,3) = \"0x18\"
a(6,4) = \"0x0c\"
a(6,5) = \"0x3e\"
a(6,6) = \"0x63\"
a(6,7) = \"0xc3\"
a(6,8) = \"0xc3\"
a(6,9) = \"0x66\"
a(6,10) =\"0x3c\"

a(7,1) = \"0xff\" \'数字7
a(7,2) = \"0xc0\"
a(7,3) = \"0x60\"
a(7,4) = \"0x30\"
a(7,5) = \"0x18\"
a(7,6) = \"0x18\"
a(7,7) = \"0x18\"
a(7,8) = \"0x18\"
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: