网络编程
位置:首页>> 网络编程>> Asp编程>> ASP验证码的实现原理及源码(2)

ASP验证码的实现原理及源码(2)

作者:扬子 来源:tingfo.net 发布时间:2007-10-02 12:14:00 

标签:验证码,原理

验证码验证页面例子:chk.asp


<% 
if trim(request.form("pwds"))<>trim(session("pwdt")) then 
%> 
输入错误: 应该为:<%=session("pwdt")%>,可你输入的是:<%=request.form("pwds")%> 
<% 
else 
%> 
输入正确 
<%end if%>

 count.asp



<!--#include file="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 (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 
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 
%>


0
投稿

猜你喜欢

  • 最近写一个小小的留言本;算是对AJAX的综合应用迈出了一小步在制作过程中有很多兴奋的体验 虽然和以前的制作方法比起来繁杂了一些但是整个页面的
  • 前段时间在论坛上有人问到一个淘宝网上的hover伪类实现的效果如果兼容ie6。其实,问题很简单,就是hover伪类在IE6中得不到很好的支持
  • 大家平时见到google的广告太多了,但有没有兴趣知道一下它的运行过程呢?下面我们一起来看看这个广告代码的执行过程,以及其中的一些精彩内容。
  • 昨天在得写“RSS收藏”栏目展现的时候我让RSS的列表用弹出的形式展现了,开始是直接的控制 style.display 来做的,但是感觉有点
  • 在本机运行含有JavaScript代码的网页时(比如Google AD代码),IE浏览器会产生一个警告。这个“警告”确实很烦人,开始时还会误
  • 为什么我把自己机子上的数据库备份文件往另一台机子上还原不成功?可能是你在Restore的对话框中选项不正确。Restore 有三个选项,分别
  • 应该是很方便的了,支持几乎所有主流浏览器(ie5,6,7,8;ff;傲游;Opera)已更新至可提交录入内容<script type=
  • 网络上有很多个性化的404页面,但是404页面不仅仅是个性化展示,404页面本来目的是:告诉浏览者其所请求的页面不存在或链接错误,同时引导用
  • 在网上我们常常看见一些注册表单的输入框部分并不是我们常见的矩形框,而是一条细线,很多朋友对此很感兴趣。其实要实现这样的效果并不困难,我们只要
  • 网页开发人员常常希望能够了解并掌握多种语言,结果是,学习一门语言的所有内容是棘手的,但是却很容易发现你并没有完全利用那些比较特殊却很有用的标
  • 在你自己安装了一个新的MySQL服务器后,你需要为MySQL的root用户指定一个目录(缺省无口令),否则如果你忘记这点,你将你的MySQL
  • 前文主要纠正title用法上的几点误区,其实除链接和表单的常规标签用法。在内容组织方面还有大潜力待发掘,比如写网志经常会有针对词、短语说明的
  • 在url网址中,我们经常使用server.urlencode来对网址进行编码,特别是遇到网址中有中文字符的时候,如<a href=&q
  • CSS 中的 position 属性可以很容易的将指定的元素定位到理想的位置。但在使用这一属性时需要注意,尤其是在表格元素中。为了说明此问题
  • 公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交。结果是在内容显示页面上是五花八门的样式,有时
  • 大家都在关注视觉的盛宴,西方的美学;今天就分享下,中国最为古老的美,也是身边随处可见的美学–中国汉字书法之美;古文者,仓颉做造也。仰观奎星园
  • 本文介绍了使用Application来统计访问网站的在线人数的方法,并介绍了使用Application时应该注意的事项。首先讲明白,用ASP
  • 对于 link 元素 和 style 元素 我相信大家都比较了解,但对于他们的出现位置可能有误解。在 淘宝 的所有频道中出现这样一个问题:频
  • 1、创建存储过程 create or replace procedure test(var_name_1 in type,var_name_
  • 第一:编写限制搜索范围的查询语句。众所周知,在数据库查询的时候返回记录的多少直接关系到查询的效率。所以,在客户端通过一定的条件语句,限制搜索
手机版 网络编程 asp之家 www.aspxhome.com