ASP生成数字相加求和的BMP图片验证码

Vue3多级路由缓存失效的深度解析与实战解决方案 本文深度解析了Vue3项目中多级路由下keep-alive缓存失效的根本原因,并提供了三种实战解决方案:通过路由扁平化根治问题、利用状态管理精细模拟缓存效果,以及借助keep-alive-vue3插件快速修复。文章旨在帮助开发者彻底理解Vue Router与keep-alive的协作机制,从而根据项目情况选择最佳策略,有效解决页面状态丢失的难题。 阅读详情
目前网络上有许多图片验证码形式,那些没有生成图片的验证码的抗破解防御能力简直不堪一击;有人直接在网页源码里显示出具体的数字,然后要求访问者输入一个相加后的和;如3+5=多少,这样的验证码新意倒有一些,不过可惜,根本没有起到保护的作用。

flymorn改进一下以上的新意,直接把3+6=多少的形式采用asp程序生成Bmp图片格式,并且把数字相加后的和存进session里,加大破解的门槛;没有一些图形图像学知识的人是无法破解的。代码如下:

复制代码 代码如下:

<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.cachecontrol = "no-cache"

Response.ContentType = "Image/Bmp"

Call Com_CreatValidCode()

Sub Com_CreatValidCode()

Randomize

Dim i, ii, iii

Const cAmount = 10 '数值个数

Const cCode = "0123456789" '数值范围

Dim vColorData(2)

vColorData(0) = "" '黑色点要转为彩色点,暂时不定义

vColorData(1) = ChrB(255) & ChrB(255) & ChrB(255) '白点

Dim vCode(4), vCodes '产生一组任意数

For i = 0 To 3

vCode(i) = Int(Rnd * cAmount) '数组等于总数*随机数

if i=1 then vCode(i)="11" '第二位为+

if i=3 then vCode(i)="10" '第四位为=

vCodes=vCodes&Mid(cCode,vCode(i)+1,1) '串等于串加上后续值

Next

session("checkcode")=int(Mid(vCodes,1,1)) + int(Mid(vCodes,2,1)) '计算相加和值并赋值给session

Dim vNumberData(36)

vNumberData(0) =

"1110000111110111101111011110111101111011110111101111011110111101111011110111101111011110111110000111"

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) =

"1111111111111111111111111111111000000001111111111111111111111000000001111111111111111111111111111111"
'表示+
vNumberData(11) =

"1111111111111100111111110011111111001111100000000110000000011111001111111100111111110011111111111111"


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 Mid(vNumberData(vCode(ii)), i * 10 + iii , 1) ="0" then '产生彩色点,减去一个固定值,可使颜色偏深

dim a,b,c

a=abs(Rnd * 256-60)

b=abs(Rnd * 256-128)

c=abs(Rnd * 256-60)

vColorData(0) = ChrB(a) & ChrB(b) & ChrB(c)

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

else

dim d,e,f '产生彩色背景,颜色偏浅,也可以随机生成噪点做背景

d=abs(Rnd * 255)

e=abs(Rnd * 255)

f=abs(Rnd * 255)

if d+e+f>640 then '可改值,调整背景色深

vColorData(1) = ChrB(d) & ChrB(e) & ChrB(f)

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

else

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

end if

end if

Next

Next

Next

End Sub
%>

以上代码可直接另存为一个文件,如vcode.asp,然后通过图片的方式调用改文件,如<img src="vcode.asp" border=0 align="absmiddle" />,然后在提交后的处理页面里验证session("checkcode")的值就可以了。这个代码是flymorn自己改进的,原始的参考代码请直接在google里搜索“用ASP生成Bmp图片”,或查看这个网址,可以找到一些相关的。

最后,就是“5+6=”这样的随机数字相加的形式生成在bmp图片里了,它们的和需要你计算后填入,以达到验证的功能,防止机器蹂躏你的网站。如果你也关心asp图片验证码,欢迎留言,让我们一起交流。
学习心得——COMSOL Multiphysics with MATLAB联合仿真及寻优计算 阅读详情

相关推荐

16进制指令求和校验码计算器

之前上传了一份,可能是因为用VS2019编译的,一些电脑上无法运行,缺少对应的动态库, 所以重新用Dev C++编译了一下,这个经过在那些不能使用的电脑上验证可以正常使用 功能:----------->Ox16进制指令集校验码计算器<----------- 【1】本程序适用于16进制指令校验码计算 【2】例如需要校验的指令为EE0101010000,中间可以有空格,EE 01 01 01 00 00 两两1组,最大支持31组 【3】支持粘贴输入多条指令,每行1条指令 【4】采用算法为: 校验码=(OxEE + Ox01 + Ox01 + Ox01 + Ox00 + Ox00) % 256 = OxF1 【5】在当前目录自动生成“校验码.txt”文件,以每次启动程序时间位标识 【6】将每次计算的指令集和得到的校验码保存下来,如果需要保留计算过的指令集和校验码,务必在使用完成后将文件备份到其他文件夹

Vector::data()在opengl颜色顶点混合数组中的使用问题

使用glcolorpointer() 和glvetexpointer()绘制矩形的代码如下 显示列表生成: 这里我遇到的一个问题就是glcolorpointer传递指针的偏移,我需要的颜色偏移值为sizeof(float)*3 就是结构题里面的float x,y,z 三个元素 ,所以颜色偏移值为12字节 但是我一直得不到正确的颜色显示 原因在于vector::data()返回的是传入模版的指针 在这里返回的是我自己定义的VColor* 我对VColor*类型的指针进行了+12 这里偏移的字节..

Bang666的博客 463

不显示验证码修复工具

用户计算机安装了windows XP SP2系统后(包括最新的win2003sp1),在一些网站上在进行用户注册或后台管理登录需要输入验证码时,页面却无法显示验证码,(而在计算机升级为windows XP SP2以前却可以显示。其原因是大部分的验证码都是以图片形式出现的,且图片格试一般为.xbm,而Windows XP SP2操作系统在默认状态下是不支持该图片格式的,所以,无法显示验证码

ASP生成XBM数字图片(可用来生成验证码

ASP生成XBM数字图片(可用来生成验证码)作者:梦猫猫     文章来源: 六月海     点击数: 629     更新时间:2004-2-29  示例图片:XBM图片是一个纯文本的文件,可以用ASP来自动生成。可以用它来使用网站登陆的验证码;我们用记事本打开该文件进行分析:其文件结构为:#define counter_widt

gbopeng的专栏 1359

asp点击按钮sql列求和_(三)数据分析-sql汇总分析

一、汇总函数:1、COUNT:COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入);语法:SELECT COUNT(column_name) FROM table_nameCOUNT(*) 函数返回表中的记录数:可记录所有的列,包括null值;2、sum(列名):只能对某列数据求和;且只能对数值类型列计算;3、avg(列名):求某列平均值;且只能对数值类型列计算;4、...

weixin_39756192的博客 380

asp点击按钮sql列求和_SQL 汇总分析

一.汇总/聚合函数汇总/聚合函数:计数count、求和sum、求平均avg、求最大值max、求最小值min这五种汇总函数都可以使用distinct函数;除了count函数,其他汇总函数把null排除在外且算术函数只能对数值类型数据计算。1.1 汇总/聚合函数 计数 count函数 (求某列的行数)/*【计算null以外的行数】*/ select count (<列名>) from &...

weixin_39778447的博客 434

php密码控件,php 验证码控件

注意:以下代码需要打开php的GD库,修改php.in文件的配置,把已经注释掉的行之前的分号取消即可:extension=php_gd2.dll。session_start();//生成验证码图片Header("Content-type:image/PNG");$im=imagecreate(44,18);$back=ImageColorAllocate($im,245,245,245...

weixin_28785069的博客 126

PHP验证码程序

PHP验证码程序:session生成图片 Author:Flymorn Source:飘易博客 Categories:PHP编程 PostTime:2008-4-28 11:38:37 正 文:        昨天捣鼓了一下PHP验证码生成图片程序,采用了session识别,稍微改进了一下目前网络上流传的PHP验证码,加入杂点,数字颜色随机显示,控制4位数字显示;话不多说了,程序如下

北京联合大学CSDN高校俱乐部 1067

ASP生成验证码-BMP图片原理,GIF格式,无组件生成验证码

    Option Explicit  显示声明Class Com_GifCode_ClassPublic Noisy, Count, Width, Height, Angle, Offset, BorderPrivate Graph(), Margin(3)Private Sub Class_Initialize()RandomizeNoisy = 16  干扰点出现的概率Coun

织网e站 1488

ASP验证码

如今你要申请一个QQ号,需要输入很复杂的验证码验证码由若干个汉字组成,还加上了花哩唬哨的背景,使得有些汉字实在难以辨认。腾讯这么做,是为了防止有人利用软件批量获取QQ号码----每次提交都要输入随机生成验证码,这是软件难以做到的。     最初的验证码,只是几个随机生成数字。但是道高一尺魔高一丈,很快就有能识别数字的软件了,“收藏家”们利用这种软件批量获取帐号,或是探测密码,因为软件可以

Microblue(严 武) 1075

图形验证码.html

该代码为前端使用canvas生成图形验证码,虽然相对安全问题比较低级,但是对一些没有太大安全要求网站比较实用,可以缓解部分服务器压力。

php 数字bmp,PHP识别24位BMP验证码

PHP识别24位BMP验证码今天接到个活,就是识别一个简单的验证码,这个验证码异常的简单,具有很少的干扰信息,所以只要拿到信息进行比较.很容易就可以识别,但是一切不会那么一帆风顺的..也许是对于我来说吧.我觉得我干什么都十分曲折...这个验证码图片是用ASP生成的..理所当然成了BMP格式.但是对于PHP来说.这是个软伤.因为PHP的GD库根本就没把BMP纳入在内.虽然有wbmp但是还是不一样的...

weixin_35928736的博客 171

ASP验证码的关系

如今你要申请一个QQ号,需要输入很复杂的验证码验证码由若干个汉字组成,还加上了花里胡哨的背景,使得有些汉字实在难以辨认。腾讯这么做,是为了防止有人利用软件批量获取QQ号码----每次提交都要输入随机生成验证码,这是软件难以做到的。 最初的验证码,只是几个随机生成数字。但是...

chiguoliao7161的博客 162

asp加法图片验证码

以下是numcode.asp的内容 程序代码 <%@CodePage="65001"%> <% Call Com_CreatValidCode("GetCode") Sub Com_CreatValidCode(pSN) ' 禁止缓存 Response.Expires = -9999 Response.AddHea...

266

利用ASPJPEG组件生成中文验证码

  因为ASPASP.net无法共享Session,所以只能用ASP写,ASP没有自带的处理图片的组件,好在服务器支持ASPJPEG,所以写起来也比较容易。  不过,运行起来有个小问题,就是不支持一些字体。只能默认使用宋体了。Code.jpg文件下载(请点另键下载,并改名为Code.jpg)下载Dv_GetCode.asp和Code.jpg文件压缩包下面文件保存为Dv_GetCo

网摘 2278

asp生成图片

//一个最简单的例子 //可广泛应用于计数器、时钟等任何需要动态生成图形的地方 //通过改变ContentType的值,比如改为 "image/gif"可以作出更漂亮的图形 Response.ContentType ="image/x-xbitmap"; Response.Write ("#define counter_width 8/r/n");  //图形宽 Response.Write

saihoo(天涯)的专栏 2703

一个数字加运算的验证码

之前做项目的时候,有一个验证码的功能需要做成运算验证码,我这里只做了一个单一加法运算的验证码,現代码记录如下,方便日后使用。 jsp页面上的代码: 验证码js里的代码: var flag = false; $(function() { var code = 9999; function codes(){ var ranColor =

wal1314520的博客 7145

ASP 求和(select sum(num))

Set rs2=server.CreateObject("adodb.recordset") sql2="select sum(num) AS Total from Date2_1 where typeid="&typeid&"" rs2.open sql2,conn,1,3   和:Total=rs2("Total") num是个表中求和的字段

php菜鸟技术天地 4404

(全新整理)省级-电子政务指数数据2016-2022年

1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/1509366332、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题3、适用对象:大学生,本科生,研究生小白可用,容易上手!!!4、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

上一篇: asp 随机数
下一篇: Stream 对象表示二进制数据或文本的流。
guobiaomzld
博客等级 码龄16年 5粉丝 19原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值