`
xiaosong
  • 浏览: 66451 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何生成ASP图片验证码

阅读更多

1 图象绘制完成后,将文件存为24位位图格式的BMP图象文件
2 去除前54Byte内容
3 改名为BODY+数字.FIX
4 修改CHECKCODE.ASP,调用你新做的这个文件
body.fix,head.fix是什么文件?用什么打开?

就是生成彩色验证码的文件
1、checkcode.ASP 负责生成和输出验证码 1309 byte。
2、head.fix 是54byte的BMP头
3、body.fix 数字0~9 10X100竖排的RGB阵列数据3200 byte
使用ASP生成图片彩色校验码
49行代码,三个文件
Asp文件:Code.Asp
数据文件:body.Fix , Head.Fix
用法:<img src="code.asp"> 

<% 
Option Explicit 
Response.buffer=true 
NumCode 
Function NumCode() 
Response.Expires = -1 
Response.AddHeader "Pragma","no-cache" 
Response.AddHeader "cache-ctrol","no-cache" 
dim zNum,i,j 
dim Ados,Ados1 
Randomize timer 
zNum = cint(8999*Rnd+1000) 
Session("GetCode") = zNum 
dim zimg(4),NStr 
NStr=cstr(zNum) 
For i=0 to 3 
zimg(i)=cint(mid(NStr,i+1,1)) 
Next 
dim Pos 
set Ados=Server.CreateObject("Adodb.Stream") 
Ados.Mode=3 
Ados.Type=1 
Ados.Open 
set Ados1=Server.CreateObject("Adodb.Stream") 
Ados1.Mode=3 
Ados1.Type=1 
Ados1.Open 
Ados.LoadFromFile(Server.mappath("body.Fix")) 
Ados1.write Ados.read(1280) 
for i=0 to 3 
Ados.Position=(9-zimg(i))*320 
Ados1.Position=i*320 
Ados1.write ados.read(320) 
next 
Ados.LoadFromFile(Server.mappath("head.fix")) 
Pos=lenb(Ados.read()) 
Ados.Position=Pos 
for i=0 to 9 step 1 
for j=0 to 3 
Ados1.Position=i*32+j*320 
Ados.Position=Pos+30*j+i*120 
Ados.write ados1.read(30) 
next 
next 
Response.ContentType = "image/BMP" 
Ados.Position=0 
Response.BinaryWrite Ados.read() 
Ados.Close:set Ados=nothing 
Ados1.Close:set Ados1=nothing 
End Function 
' Asp code Created by BlueIdea.COM Web Team V37 2003-7-25 
%>



代码解释:
Response.buffer=true
NumCode
Function NumCode()
Response.Expires = -1
Response.AddHeader "Pragma","no-cache"
Response.AddHeader "cache-ctrol","no-cache"
dim zNum,i,j
dim Ados,Ados1
Randomize timer
生成随机四位数字:
zNum = cint(8999*Rnd+1000)
传递给session
Session("GetCode") = zNum
该for循环是将随机数字放入一个下标3的数组,便于提供给后面的阵列变换
dim zimg(3),NStr
NStr=cstr(zNum)
For i=0 to 3
zimg(i)=cint(mid(NStr,i+1,1))
Next
dim Pos

'定义二个 ADODB.Stream binary对象,作图像数据操作之用:

set Ados=Server.CreateObject("Adodb.Stream")
Ados.Mode=3
Ados.Type=1
Ados.Open
set Ados1=Server.CreateObject("Adodb.Stream")
Ados1.Mode=3
Ados1.Type=1
Ados1.Open
'载入0~9的数字数据10x100的,Gbr的阵列数据,每个320字节,10个数字3200byte
'BGR一个点,10x10个点一个数字,一个点三个字节(二进制8位,16进制 00~FF)
'一行10个点 30字节 + 行结束标记 00 00 二字节 32字节,所以一个10x100宽小于长的图像每个数字10x10是320字节
'长大于宽的则无行结束标记 0000,直接是300字节
这些就是BMP 24bit的数据详细信息了
‘至于头部,也很简单,包含长宽,图像开始标记等等~~才54字节,远没jpg什么的复杂

Ados.LoadFromFile(Server.mappath("body.Fix"))
Ados1.write Ados.read(1280)
'第一个for循环,按生成的随机数字顺序从 10X100的数字阵列中提取出相应的四个数字
但是竖排的数字阵列
for i=0 to 3
Ados.Position=(9-zimg(i))*320
Ados1.Position=i*320
Ados1.write ados.read(320)
next
'清空已经用完的ADOS的数据,调入替换新的图像头54字节的头文件
Ados.LoadFromFile(Server.mappath("head.fix"))
Pos=lenb(Ados.read())
Ados.Position=Pos '指定Pos位置,即可再偏移54字节的位置添加图形数据
第二个for循环,进行数字的阵列变换,由竖排的块转换为横排的数字块
方法是隔320字节抽取4次30字节写入ados对象,再抽取偏移第二行的图像数据
30字节是因为bmp 宽大于长时无00 00的行结束标记
for i=0 to 9 step 1
for j=0 to 3
Ados1.Position=i*32+j*320
Ados.Position=Pos+30*j+i*120
Ados.write ados1.read(30)
next
next
Ados.Position=0
response.BinaryWrite直接向客户端发送图像数据
Response.ContentType = "image/BMP"
Response.BinaryWrite Ados.read()
Ados.Close:set Ados=nothing
Ados1.Close:set Ados1=nothing
End Function

数字和字母组合并生成图片的验证码详解
    大家经常在网上登陆的时候经常会看到让你输入验证码,有的是文字的,有的呢是图片,比如注册为本站会员的时候,就会看到数字图片验证码;网上关于数字文字验证码实现方法的相关资料很多,而我们这里介绍的是数字和字母随机组成的并且生成图片的验证码的实现方法。看起来很复杂、其实很简单的,大家跟着我往下看:

    首先,我们先介绍一下设计思路,数字和字母的随机组合生成验证码,然后将验证码生成图片,这里“数字和字母的组合”应该是随机取出来的;如果是专门的数字验证码,我们可以这样实现:
ycodenum=4 '验证码的位数,或者说成个数
for i=1 to ycodenum
Randomize '初始化随机数发生器
ycode=ycode&Int((9*Rnd)) 'rnd是随机数,从0到1之间的任意实数,这里获得0到9之间的整数
next

response.write ycode '就可以输出数字验证码(4位)

然而,我们要让数字和字母同样随机生成,这里我们可以用到数组来实现这种效果,如下:
ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '将数字和大写字母组成一个字符串
yc=split(char,",") '将字符串生成数组
ycodenum=4
for i=1 to ycodenum
Randomize
ycode=ycode&yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd
next
response.write ycode

现在看看输出结果是不是数字和字母随机组合的呢?
    下面看看怎样生成图片,这个也许有些朋友知道:asp不能生成图片,必须使用asp组件。不错,我们这里使用的是ASP图象组件shotgraph。有一点大家注意,服务器不是自己的不能用哦,因为你装不了这组件。
    组件的下载地址:http://www.csdn.com.cn/download/ShotGraph.rar,至于怎么注册,这里就不多说了,网上有很多资料!
我们看看生成图片的代码:

ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '将数字和大写字母组成一个字符串 
yc=split(char,",") '将字符串生成数组 
ycodenum=4 
for i=1 to ycodenum 
Randomize 
ycode=ycode&yc(Int((35*Rnd))) '数组一般从0开始读取,所以这里为35*Rnd 
next 

Response.Clear 
Response.ContentType="image/gif" 
set obj=Server.CreateObject("shotgraph.image") 
x=55 '图片的宽 
y=26 '图片的高 
obj.CreateImage x,y,8 '8是图片的颜色8位 
obj.SetColor 0,55,126,222 
obj.SetColor 1,255,255,255 

obj.CreatePen "PS_SOLID",1,0 
obj.SetBgColor 0 
obj.Rectangle 0,0,x-1,y-1 
obj.SetBkMode "TRANSPARENT" 
obj.CreateFont "Arial",136,18,1,False,False,False,False 
obj.SetTextColor 1 
obj.TextOut 5,4,ycode&" " 

img=obj.GifImage(-1,1,"") 
Response.BinaryWrite (img) 

针对以上代码的画图原理参考:http://www.pconline.com.cn/pcedu/empolder/wz/asp/10204/45207.html
分享到:
评论

相关推荐

    asp生成图片验证码类

    调用页main.asp,点击图片更换验证码 &lt;form method="post" action="from.asp"&gt; &lt;script language=javascript&gt;document.write("&lt;img src=code.asp align=absmiddle id=Image1 onclick=Image1.src='code.asp?'+Math...

    ASP.NET生成图片验证码

    ### ASP.NET生成图片验证码知识点详解 #### 一、概述 在Web应用开发中,验证码是一种常见的安全措施,用于区分操作者是人还是自动化程序。本文将详细介绍如何在ASP.NET环境中生成图片验证码,包括代码实现与关键...

    快速生成图片验证码的例子

    本示例将详细介绍如何使用.NET框架下的C#语言,结合imageProcessing.dll库,快速生成图片验证码。 首先,我们要了解imageProcessing.dll库。这是一个专门为C#开发者设计的图像处理库,提供了丰富的图像操作函数,如...

    一个asp.net图片验证码

    ASP.NET 图片验证码是一种用于验证用户身份的安全机制,它通过生成随机的图像和文本组合来防止自动化的机器人或恶意软件进行非法操作。这种验证码的主要目的是防止垃圾邮件、自动注册和恶意登录尝试。在这个特定的...

    asp汉字图片验证码

    ASP汉字图片验证码是一种常见的安全验证技术,用于防止自动化程序(如机器人)对网站进行非法操作,如注册、登录或发布内容。在ASP(Active Server Pages)这种经典的服务器端脚本语言中实现汉字图片验证码,可以...

    asp页面无刷新生成图片验证码

    在ASP.NET中,无刷新生成图片验证码是一项常用的技术,它用于增强网站...以上就是ASP.NET中无刷新生成图片验证码的主要步骤和技术要点。通过理解并实践这些知识点,开发者可以创建出既安全又用户体验良好的验证码系统。

    asp生成验证码图片

    标题中的"asp生成验证码图片"指的是使用ASP技术来创建一个能够自动生成GIF格式的验证码图片的功能。这种功能对于防止垃圾邮件、恶意注册等网络安全问题至关重要。GIF是一种支持动画和透明度的图像格式,尽管现代Web...

    Asp.Net 生成验证码

    在`RegPicShow.aspx`文件中,可能是用于展示验证码的ASP.Net页面,它可能会调用后台代码生成的验证码图片并显示在页面上。通常,这个页面会有一个隐藏的字段用于存储验证码的值,以便在提交表单时进行比较。 验证码...

    asp.net图片验证码

    ASP.NET 图片验证码是一种常用的网络安全措施,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、垃圾邮件发送等。在ASP.NET中,我们可以通过创建一个动态生成且包含随机字符的图像来实现这一功能。以下...

    【ASP.NET编程知识】Asp.net Web Api实现图片点击式图片验证码功能.docx

    总的来说,通过ASP.NET Web API实现点击式图片验证码功能,不仅提供了额外的安全层,还增加了用户体验的趣味性。这样的验证码实现需要考虑的因素包括文字的选择、颜色的随机性、位置的分配以及验证逻辑的实现,这些...

    asp.net 图片验证码

    ASP.NET 图片验证码是一种用于网络安全的身份验证机制,它在网页上以图像的形式显示一组随机生成的字符,用户需要输入这些字符以证明他们不是自动化程序。这种验证码的主要目的是防止机器人、爬虫和其他自动化工具...

    ASP图形验证码代码

    ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码代码ASP图形验证码...

    asp生成汉字验证码

    `readme.html`可能包含关于如何使用这个ASP验证码脚本的说明,包括如何在页面上嵌入验证码图片、如何验证用户输入的验证码等步骤。HTML文件通常用于提供项目简介、安装指南或者常见问题解答。 `KK_Font_Tool.html`...

    .net 生成 验证码 验证图片

    而`ValidaImg.aspx`可能是对应的ASP.NET Web Forms页面,展示生成的验证码图片。 此外,客户端输入的验证码会在提交表单时与服务器端保存的验证码值进行比较,如果两者匹配,则验证通过,否则提示用户重新输入。这...

    ASP.NET图片验证码程序(含调用实例)

    ASP.NET图片验证码程序是一种用于网络安全的身份验证机制,它主要用于防止自动化的机器人或恶意脚本进行非法操作,如垃圾邮件提交、刷票等。这个程序利用C#编程语言编写,结合了图像处理技术来生成随机的、难以被...

    ASP动态产生图片验证码的方法

    在ASP.NET开发中,生成动态图片验证码是一种常见的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如注册、登录等。这篇文章将详细介绍如何在ASP.NET中利用C#语言来实现这一功能。 首先,我们需要了解...

    asp图片验证码源码

    使用简单,asp图片验证码,内附说明。 在需要显示验证码图片的地方插入代码 &lt;img src="code.asp"&gt; 同时,自动生成session("psn"),表单提交验证session就可以了。

    asp.net验证码生成类

    ASP.NET验证码生成类主要用于在Web应用中创建安全的随机字符序列,用于验证用户输入是否有效,防止自动机器人或恶意程序的攻击。此类通常包括几个关键功能,如生成验证码字符串、创建验证码图片以及处理相关的安全...

    ASP图片验证码程序

    总结起来,ASP图片验证码程序是一个结合了ASP编程、图形生成、随机数生成和用户交互的安全组件,它在保护网站免受自动化攻击的同时,也对用户体验和安全性提出了挑战。开发者需要在安全性和可用性之间找到平衡,不断...

Global site tag (gtag.js) - Google Analytics