记载鬼怪的著名书籍:ASP验证码制作

来源:百度文库 编辑:高考问答 时间:2024/04/29 05:31:01
请问ASP验证码的具体制作方法和代码。
大虾们请讲解仔细一点,网上代码一大串,可小菜我不知道咋用,请讲解一定要仔细仔细再仔细行吗?
小菜我先跪谢了!

给你写一段简单的4位数的数字验证码的代码:

思想:一个隐藏域保存产生的验证码,一个文本框保存用户输入的验证码,提交后进行对两个表单对象进行对比验证

一、产生验证码的函数
'----------------------获取验证代码----------------------
Function GetValidateCode()
Randomize Timer '产生一个随机树
GetValidateCode=Left(Int(Rnd*9998)+1000,4)
If Len(GetValidateCode)>4 Then
GetValidateCode=Len(GetValidateCode&9999,4)
End If
End Function
'--------------------------------------------------------

二、调用方法(下面这段代码放到表单里面):
<%ValidateCode=GetValidateCode()'将获取的验证码赋值给ValidateCode%>
<input type="hidden" name="ValidateCode" value="<%=ValidateCode%>">
<input type="text" name="ValidateCodeInput" value="<%=ValidateCode%>" size="5" maxlength="4" class="input3">
<%=ValidateCode%>

一共4个页面:form.asp; chk.asp; num.asp; count.asp

得到一个随即数字。加密!

解密后成成XBM图片

利用session 判断

form.asp

<%

'### To encrypt/decrypt include this code in your page

'### strMyEncryptedString = EncryptString(strString)

'### strMyDecryptedString = DeCryptString(strMyEncryptedString)

'### You are free to use this code as long as credits remain in place

'### also if you improve this code let me know.

Private Function EncryptString(strString)

'####################################################################

'### Crypt Function (C) 2001 by Slavic Kozyuk grindkore@yahoo.com ###

'### Arguments: strString <--- String you wish to encrypt ###

'### Output: Encrypted HEX string ###

'####################################################################

Dim CharHexSet, intStringLen, strTemp, strRAW, i, intKey, intOffSet

Randomize Timer

intKey = Round((RND * 1000000) + 1000000) '##### Key Bitsize

intOffSet = Round((RND * 1000000) + 1000000) '##### KeyOffSet Bitsize

If IsNull(strString) = False Then

strRAW = strString

intStringLen = Len(strRAW)

For i = 0 to intStringLen - 1

strTemp = Left(strRAW, 1)

strRAW = Right(strRAW, Len(strRAW) - 1)

CharHexSet = CharHexSet & Hex(Asc(strTemp) * intKey)& Hex(intKey)

Next

EncryptString = CharHexSet & "|" & Hex(intOffSet + intKey)
& "|" & Hex(intOffSet)

Else

EncryptString = ""

End If

End Function

Private Function DeCryptString(strCryptString)

'####################################################################

'### Crypt Function (C) 2001 by Slavic Kozyuk grindkore@yahoo.com ###

'### Arguments: Encrypted HEX stringt ###

'### Output: Decrypted ASCII string ###

'####################################################################

'### Note this function uses HexConv() and get_hxno() functions ###

'### so make sure they are not removed ###

'####################################################################

Dim strRAW, arHexCharSet, i, intKey, intOffSet, strRawKey, strHexCrypData

strRawKey = Right(strCryptString, Len(strCryptString) - InStr(strCryptString,
"|"))

intOffSet = Right(strRawKey, Len(strRawKey) - InStr(strRawKey,"|"))

intKey = HexConv(Left(strRawKey, InStr(strRawKey, "|") - 1)) - HexConv(intOffSet)

strHexCrypData = Left(strCryptString, Len(strCryptString) - (Len(strRawKey)
+ 1))

arHexCharSet = Split(strHexCrypData, Hex(intKey))

For i=0 to UBound(arHexCharSet)

strRAW = strRAW & Chr(HexConv(arHexCharSet(i))/intKey)

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
完成