原程序
http://vifo.vicp.net:8088/datalib/showtopic.asp?id=108:10:1:1
主程序共三个
我的调用方式 <script language="javascript" src="/verify/num.asp"></script>
验证方式 if trim(loginnum)<>trim(session("loginnum")) then
response.write error("验证码错误!")
response.end
end if
num.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 ? 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 ? 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
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 = int(7999*rnd+2000) '计数器的值
num2 = encryptstring(num)
session("loginnum")=num
%>
document.write("<img src='/verify/count.asp?sksid=<%=num2%>'>") ' 这里是调用图片的路径
count.asp
<!--#include file="numimg.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 ? 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 ? 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
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=cint(decryptstring(request.querystring("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 = "#define counter_width " & width & hc
image = image & "#define counter_height " & height & hc
image = image & "static 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"
a(7,9) = "0x18"
a(7,10)= "0x18"
a(8,1) = "0x3c" '数字8
a(8,2) = "0x66"
a(8,3) = "0xc3"
a(8,4) = "0x66"
a(8,5) = "0x3c"
a(8,6) = "0x66"
a(8,7) = "0xc3"
a(8,8) = "0xc3"
a(8,9) = "0x66"
a(8,10)= "0x3c"
a(9,1) = "0x3c" '数字9
a(9,2) = "0x66"
a(9,3) = "0xc3"
a(9,4) = "0xc3"
a(9,5) = "0x66"
a(9,6) = "0x3c"
a(9,7) = "0x18"
a(9,8) = "0x0c"
a(9,9) = "0x06"
a(9,10)= "0x03"
%>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器