无组件生成BMP验证码

用Java制作一个简单的图片验证程序(Java练手小项目) 1.项目效果演示: 1.验证界面: 2.验证成功界面: 3.验证失败界面: 简单介绍:实现每次运行出现四个随机字符提供给用户验证,点击确定按钮,如果验证码正确,则会提示验证成功,否则,则出现验证失败。 2.下面我们来说说程序建立,先建一个Java项目,然后建一个file文件夹,里面放随机生成的照片,命名为aaa.jpg,还有在src下建立一个po.ak.com的包,包里有五个Java类。 3.下面是五个Java类的代码: 1.Images.java package po 阅读详情
Call Com_CreatValidCode("ValidCode")

Sub Com_CreatValidCode(pSN)

     'Author: Layen
     'QQ: 84815733
     'E-mail: support@ssaw.net

     ' 禁止缓存
     Response.Expires = -9999
     Response.AddHeader "Pragma","no-cache"
     Response.AddHeader "cache-ctrol","no-cache"
     Response.ContentType = "Image/BMP"

     Randomize

     Dim i, ii, iii

     Const cOdds = 8 ' 杂点出现的机率
     Const cAmount = 36 ' 文字数量
     Const cCode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

     ' 颜色的数据(字符,背景)
     Dim vColorData(1)
     vColorData(0) = ChrB(0) & ChrB(0) & ChrB(0)  ' 蓝0,绿0,红0(黑色)
     vColorData(1) = ChrB(250) & ChrB(236) & ChrB(211) ' 蓝250,绿236,红211(浅蓝色)

     ' 随机产生字符
     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.BinaryWrite vColorData(Mid(vNumberData(vCode(ii)), i * 10 + iii, 1))
                       End If
                 Next
           Next
     Next
End Sub

eDP/DP接口简介 目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。 阅读详情

相关推荐

从ACTF2020看文件上传漏洞:你以为改后缀就完事了?这些坑我都帮你踩过了

本文通过ACTF2020的Upload题目深入剖析文件上传漏洞的复杂性和防御策略。文章揭示了常见误区,如仅修改文件后缀的局限性,并详细解析了绕过技巧和高级防御机制。从开发角度提供了构建安全上传功能的实用建议,帮助读者全面理解文件上传漏洞的本质与防护方法。

weixin_29278805的博客 247

[原创]无组件生成BMP验证码

Call Com_CreatValidCode("ValidCode")Sub Com_CreatValidCode(pSN)     Author: Layen     QQ: 84815733     E-mail: support@ssaw.net     禁止缓存     Response.Expires = -9999      Response.AddHeader "Prag

Layen's Blog 2255

<202505高项>《【VIP合集】 软考高项(第四版)十大知识域、五大过程组、ITTO输入输出工具、项目绩效域》

软考高项(第四版)十大知识域、五大过程组、ITTO输入输出工具、项目绩效域

Else 的博客 1854

asp程序生成数字验证码

asp 程序生成数字验证码

383

使用Java实现CRC16 MODBUS 格式校验

CRC16校验,测试如下 String str = "a5 98 03 00 00 5f c6 0f 7c 40 78 06 09 46 dc 6e db 00 16 3e 12 5c 98 00 19 98 0e 10 03 06 09 46 dc 6e db 03 0b bf 5f c6 0f 7c 43 bd b9 61 ee 96 76 99"; 校验规则: /** * CRC16_CCITT:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在前,高位在后,结

weixin_45063710的博客 1315

软件工程期末知识点总结【超详细】

生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。2、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N)3、语句覆盖 就是设计足够的调试用例,使得程序中的每个语句至少执行一次。 5、判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖 6、条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。7、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。

这个人好有趣....hh 1万+

最简单的程序实现图片验证码!

public void creatImage(){string allChar="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";string[] myStr=allChar.Split(',');int num=0,num1=0,num2=0,num3=0;st...

weixin_30767835的博客 158

自定义模型训练——打造专属OpenClaw模型(2026AI版)

本文介绍了OpenClaw自定义模型训练的核心流程,包括框架选择(PyTorch、TensorFlow、HuggingFace和原生OpenClaw框架)、训练环境搭建脚本、以及数据收集系统的设计。数据收集器支持从数据库、API、文件和网络等多种来源获取训练数据,并提供灵活的过滤机制确保数据质量。通过这套系统,开发者可以高效准备训练数据,为后续模型训练打下坚实基础。

博客 877

PHP 无组件生成BMP验证码源程序

//This is a PHP 无组件生成BMP验证码源程序,改自ASP无组件BMP验证码生成程序//  Author: Wilson Chen//  QQ: 36935338//  Email: oeichenwei@yahoo.com//  通过程序内嵌的"0-9A-Z"的BMP字型库生成真彩色BMP(当然也非常的小)//  为了尽可能的避免被crack,建议动态改变背景色,下载后适当变换字形

1053

matlab 点云可视化(1)——pcshow()函数可视化单个点云

matlab可视化单个点云常用方法汇总。

点云侠的博客 5359

第10章: MMU notifier与HMM的协作

本文摘要: HMM(Heterogeneous Memory Management)是Linux内核提供的异构内存管理框架,用于统一CPU与设备(如GPU、DSP等)的内存访问。它通过镜像页表技术实现虚拟地址空间共享,自动同步CPU和设备页表变化,支持透明的内存迁移和设备内存管理。HMM构建在mmu_interval_notifier机制上,利用序列号检测页表修改冲突,提供高效并发控制。核心数据结构包括hmm_range和HMM PFN标志位,通过hmm_range_fault()实现页表遍历和缺页处理。

图形/计算GPU的驱动与虚拟化技术分享园地 3097

无组件生成bmp验证码

Call Com_CreatValidCode("ValidCode")Sub Com_CreatValidCode(pSN) 禁止缓存 Response.Expires = -9999 Response.AddHeader "Pragma","no-cache"Response.AddHeader "cache-ctrol","no-cache"Response.ContentType = "

雪孩 527

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7567

无组件生成验证码-BMP格式

无组件生成验证码-BMP格式Call Com_CreatValidCode("ValidCode")Sub Com_CreatValidCode(pSN)     Author: Layen     QQ: 84815733     E-mail: support@ssaw.NET      禁止缓存     Response.Expires = -9999      R

南三方---网站设计开发录 506

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[收藏]无组件生成BMP验证码

Call Com_CreatValidCode("ValidCode")Sub Com_CreatValidCode(pSN)Author: LayenQQ: 84815733E-mail: support@ssaw.net 禁止缓存Response.Expires = -9999 Response.AddHeader "Pragma","no-cache"Response

无轩居 (Home of vip) 1294

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

无组件生成BMP验证码(转)

Call Com_CreatValidCode("ValidCode")Sub Com_CreatValidCode(pSN)Author: LayenQQ: 84815733E-mail: support@ssaw.net 禁止缓存Response.Expires = -9999 Response.AddHeader "Pragma","no-cache"Response.A

"小灰"的专栏 1906

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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站 1495
上一篇: WEB编程开发常用的代码
下一篇: 一个获取图片宽度和高度的类
tcomsj
博客等级 码龄21年 0粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值