Chinaunix首页 | 论坛 | 博客
  • 博客访问: 247392
  • 博文数量: 127
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1545
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-17 01:33
个人简介

知码网伴您成长

文章分类

全部博文(127)

文章存档

2015年(10)

2014年(4)

2013年(113)

我的朋友

分类: C/C++

2013-04-24 00:57:32

 

一般来说生成方式比较多,一般有数字字母形式、纯数字形式、纯字母形式等等,之前有朋友咨询过关于如何生产带有随机杂点的验证码?

  今天知码网就为大家分享一下,如何使用ASP的方式生产数字字母的随机杂点验证码。

<%

Option Explicit

Response.Buffer = True

Response.Expires = -1

session.TimeOut=60

Call Com_CreatValidCode("Validatecode")

Sub Com_CreatValidCode(pSN)

' 禁止缓存

Response.Expires = -9999

Response.AddHeader "PRagma","no-cache"

Response.AddHeader "Cache-Control","no-cache"

Response.ContentType = "Image/BMP"

Randomize

Dim i, ii, iii

Const cOdds = 0 ' 杂点出现的机率

' 颜色的数据(字符,背景)

Dim vColorData(1)

vColorData(0) = ChrB(204) & ChrB(0) & ChrB(0)  ' 204,绿0,红0(蓝色)

vColorData(1) = ChrB(252) & ChrB(232) & ChrB(221) ' 252,绿232,红221(浅蓝色)

' 随机产生字符

Const cAmount = 36 ' 文字数量

Const cCode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Dim vCode(4), vCodes

For i = 0 To 3

  vCode(i) = Int(Rnd * cAmount)

  vCodes = vCodes & Mid(cCode, vCode(i) + 1, 1)

Next

Session(pSN) = vCodes  '记录入Session

' 字符的数据

Dim vNumberData(35)

vNumberData(0) = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111"

vNumberData(1) ="1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111"

vNumberData(2) ="1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011"

vNumberData(3) ="1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111"

vNumberData(4) ="1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011"

vNumberData(5) ="1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111"

vNumberData(6) ="1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111"

vNumberData(7) ="1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111"

vNumberData(8) ="1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111"

vNumberData(9) ="1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111"

vNumberData(10) ="1111011111111101111111101011111110101111111010111111101011111100000111110111011111011101111000100011"

vNumberData(11) = "1000000111110111101111011110111101110111110000111111011101111101111011110111101111011110111000000111"

vNumberData(12) ="1110000011110111101110111110111011111111101111111110111111111011111111101111101111011101111110001111"

vNumberData(13) = "1000001111110111011111011110111101111011110111101111011110111101111011110111101111011101111000001111"

vNumberData(14) ="1000000111110111101111011011111101101111110000111111011011111101101111110111111111011110111000000111"

vNumberData(15) = "1000000111110111101111011011111101101111110000111111011011111101101111110111111111011111111000111111"

vNumberData(16) ="1110000111110111011110111101111011111111101111111110111111111011100011101111011111011101111110001111"

vNumberData(17) = "1000100011110111011111011101111101110111110000011111011101111101110111110111011111011101111000100011"

vNumberData(18) ="1100000111111101111111110111111111011111111101111111110111111111011111111101111111110111111100000111"

vNumberData(19) ="1110000011111110111111111011111111101111111110111111111011111111101111111110111110111011111000011111"

vNumberData(20) ="1000100011110111011111011011111101011111110001111111010111111101101111110110111111011101111000100011"

vNumberData(21) ="1000111111110111111111011111111101111111110111111111011111111101111111110111111111011110111000000011"

vNumberData(22) ="1000100011110010011111001001111100100111110101011111010101111101010111110101011111010101111001010011"

vNumberData(23) ="1000100011110011011111001101111101010111110101011111010101111101100111110110011111011001111000110111"

vNumberData(24) ="1110001111110111011110111110111011111011101111101110111110111011111011101111101111011101111110001111"

vNumberData(25) ="1000000111110111101111011110111101111011110000011111011111111101111111110111111111011111111000111111"

vNumberData(26) ="1110001111110111011110111110111011111011101111101110111110111011111011101001101111011001111110001011"

vNumberData(27) ="1000001111110111011111011101111101110111110000111111010111111101101111110110111111011101111000110011"

vNumberData(28) ="1110000011110111101111011110111101111111111001111111111001111111111011110111101111011110111100000111"

vNumberData(29) ="1000000011101101101111110111111111011111111101111111110111111111011111111101111111110111111110001111"

vNumberData(30) = "1000100011110111011111011101111101110111110111011111011101111101110111110111011111011101111110001111"

vNumberData(31) ="1000100011110111011111011101111101110111111010111111101011111110101111111010111111110111111111011111"

vNumberData(32) = "1001010011110101011111010101111101010111110101011111001001111110101111111010111111101011111110101111"

vNumberData(33) ="1000100011110111011111101011111110101111111101111111110111111110101111111010111111011101111000100011"

vNumberData(34) = "1000100011110111011111011101111110101111111010111111110111111111011111111101111111110111111110001111"

vNumberData(35) ="1100000011110111011111111101111111101111111110111111110111111111011111111011111111101110111100000011"

' 输出图像文件头

Response.BinaryWrite ChrB(66) & ChrB(77) & ChrB(230) & ChrB(4)& ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &_

  ChrB(0) & ChrB(0) & ChrB(54) & ChrB(0) & ChrB(0) &ChrB(0) & ChrB(40) & ChrB(0) &_

  ChrB(0) & ChrB(0) & ChrB(40) & ChrB(0) & ChrB(0) &ChrB(0) & ChrB(10) & ChrB(0) &_

  ChrB(0) & ChrB(0) & ChrB(1) & ChrB(0)

' 输出图像信息头

Response.BinaryWrite ChrB(24) & ChrB(0) & ChrB(0) & ChrB(0) &ChrB(0) & ChrB(0) & ChrB(176) & ChrB(4) &_

  ChrB(0) & ChrB(0) & ChrB(18) & ChrB(11) & ChrB(0) &ChrB(0) & ChrB(18) & ChrB(11) &_

  ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0) &ChrB(0) & ChrB(0) & ChrB(0) &_

  ChrB(0) & ChrB(0)

For i = 9 To 0 Step -1  ' 历经所有行

  For ii = 0 To 3  ' 历经所有字

   For iii = 1 To 10 ' 历经所有像素

    ' 逐行、逐字、逐像素地输出图像数据

    If Rnd * 99 + 1 < cOdds Then ' 随机生成杂点

     Response.BinaryWrite vColorData(0)

    Else

     Response.BinaryWritevColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))

    End If

   Next

  Next

Next

End Sub

%>

  以上便是使用ASP方式生成带有随机杂点的数字字母验证码的方式。

 是一家专业为软件设计者以及网络营销人士提供验证码服务以及游戏工作室提供答题专业服务公司。

  通过我们可以完成数万数十万量验证码的快速识别,保证质量,提高营销速度!

阅读(646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~