Kaptcha现成图片验证码
1.导入kaptcha jar包。
2.Web.xml配置:
3.页面:
id="picNum"onblur="check(this)"/>
Js部分:
function changeVerifyCode(img){
$("#imgPic")[0].src = " value='/kaptcha.jpg'/>?"+Math.floor(Math.random()*100); } function check(obj){ var param = $(obj).val(); $.ajax({ url: " type:"post", //数据传递方式(get或post) dataType:"json", //期待数据返回的数据格式(例如 "xml", "html", "script",或 "json") data: {'param':param}, //传递数据的参数字符串,只适合get方式 timeout:5000, //设置时间延迟请求的时间 success:function(msg) //当请求成功时触发的回调函数 { if(msg.msg=="ok"){ paramYan = true; $("#picNum").attr("style","width: 112px;height: 35px;"); } else{ paramYan = false; $("#picNum").attr("style","border: 1px solid red;background:url('../index/error.gif') no-repeat scroll right center #FFFFEE;width: 112px;height: 35px;"); } }, error:function(msg) //当请求失败时触发的函数 { } }); } 4.java 类 public void checkResetParam(String param){ String yanzhengPic = (String) request().getSession().getAttribute(com.google.code.kaptcha.Constants.K APTCHA_SESSION_KEY); yanzhengPic = yanzhengPic.toLowerCase(); if(yanzhengPic.equals(param)){ this.renderJSON("{\"msg\":\"ok\"}"); } else{ this.renderJSON("{\"msg\":\"no\"}"); } } [原]自动生成验证码图片的工具类,收藏起来备用。用法:直接调用其静态方法即可。 Map 验证码的作用 验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区还来说这个功能还是很有必要,也很重要。但我们还是提醒大家主要保护自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码。不要因为只是来iclub问问问题,就随意设置密码,保护你自己的密码也是保护你自己,免得你的账号给人盗用给自己带来不必要的麻烦。~ (1).验证码一般是防止批量注册的,人眼看起来都费劲,何况是机器。二像百度贴吧未登录发贴要输入验证码大概是防止大规模匿名回帖的发生目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。 (2).一般注册用户ID的地方以及各大论坛都要要输入验证码 (3).常见的验证码 1,四位数字,随机的一数字字符串,最原始的验证码,验证作用几乎为零。 2,CSDN网站用户登录用的是GIF格式,目前常用的随机数字图片验证码。图片上的字符比较中规中矩,验证作用比上一个好。没有基本图形图像学知识的人,不可破!可惜读取它的程序,在CSDN使用它的第一天,好像就在论坛里发布了,真是可怜! 3,QQ网站用户登录用的是PNG格式,图片用的随机数字+随机大写英文字母,整个构图有点张扬,每刷新一次,每个字符还会变位置呢!有时候出来的图片,人眼都识别不了,厉害啊… 4,MS的hotmail申请时候的是BMP格式, 随机数字+随机大写英文字母+随机干扰像素+随机位置。 5,Google的Gmail注册时候的是JPG格式,随机英文字母+随机颜色+随机位置+随机长度。6,其他各大论坛的是XBM格式,内容随机。 (4)意义:不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。 C#生成随机验证码例子: 前端: 1 自动生成验证码图片的工具类,收藏起来备用。
验证码的作用
C#生成随机验证码例子
2 给验证码图片绑定单击事件: $("#valiateCode").click(function () { $("#imgCode").attr("src",$("#imgCode").attr("src")+1); }); 后台生成验证码图片代码: ValidateCode.ashx 1 <%@ WebHandler Language="C#" Class="ValidateCode" %> 2 3using System; 4using System.Web; 5using System.Drawing; 6using System.Web.SessionState; 7 8public class ValidateCode : IHttpHandler, IRequiresSessionState 9 { 10 HttpContext context; 11public void ProcessRequest (HttpContext context1) { 12this.context = context1; 13 CreateCheckCodeImage(GenerateCheckCode()); 14 } 3验证码: 4 5 6
c#生成验证码的方法
新建一个WaterMark.ASHX文件,将如下代码Copy进去 <%@ WebHandler Language="C#" Class="WaterMark" %> using System; using System.Web; using System.Drawing; using System.Drawing.Drawing2D; using System.Web.SessionState; public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间 { public void ProcessRequest(HttpContext context) { string checkCode = GenCode(5); // 产生5位随机字符 context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证 System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); // 画图片的背景噪音线 int i; for (i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true); g.DrawString(checkCode, font, brush, 2, 2);
图片式验证码
a.jsp <%@page contentType="image/jpeg" %>
数字图像__验证码识别
一、数字图像处理基础 一幅图像可以定义为一个二维数组f(x,y),这里x,y是空间坐标,而在任何一对空间坐标(x,y)上的幅值f称为该点图像的强度或灰度。当x,y和幅值f为有限的、离散的数值时,称该图像为数字图像。 自然界呈现在人眼中的图像是连续的模拟信号,在计算机处理前,必须用图像传感器把光信号转换为表示亮度的电信号,再通过取样和量化得到一副数字图像。取样是对图像在坐标上进行离散化的过程,每一个取样点称为一个像素。量化是对图像灰度上的离散化过程。取样后将得到M*N个像素,每个像素量化得到一个灰度值L,以L表示灰度值的允许取值范围,则数字图像存储需要的比特数b可以表示为: 图像的灰度值取值范围被称为图像的动态范围。把占有灰度级全部有效段的图像称为高动态范围图像,高动态范围图像有较高的对比度。相反,地动态范围的图像看上去是冲淡了的灰暗格调。 二、图像的预处理: 主要是对图像进行灰度化、二值化、抑噪(滤波)等技术。 1、图像的灰度化 RGB系统中一个颜色值由3个分量组成,这样的图像称为彩色图像,RGB系统称为颜色空间模型。常见的颜色空间模型还有HSI、CMYK 等。如果一幅图像的颜色空间是一维的(一个颜色值只有一个颜色分
量),则这幅图像就是一副灰度图。在位图图像中,一般以R=G=B来显示灰度图像。 图 1 原始图片 常用的灰度化方法有以下三种: (2.1) (2.2) (2.3) 其中,公式(2.1)的方法来源于I色彩空间中I分量的计算公式,公式(2.2)来源于NTSC色彩空间中Y分量的计算公式。公式(2.3)是基于采用保留最小亮度(黑色)的方法。 图 2 用公式2.2灰度化后的图片 RGB彩色图像可以看成是由3副单色的灰度图像构成的,可以直 接取RGB通道中的任一个通道得到灰度化图像,如,前提是图像中目标像素的亮度信息主要分布在B通道上,否则灰度化结果将是亮度信息的大量丢失。灰度图像又叫亮度图像,由归一化的取值表示亮度,最大取值表示白色,最小取值表示黑色。
验证码大全
验证码 以下是目前主流验证码,如无特殊要求,请务必使用小写录入,切记不要使用大写! xyxkkejwh gkghhzdx 以上验证码来自https://www.360docs.net/doc/a88532066.html,(全球最大交友网),7-10个字母,输入时间限制很很短(20秒左右),需要快速录入,否则无效! rs4jr9g9 f5hqwp8r q53tgqcv 以上验证码来自https://www.360docs.net/doc/a88532066.html,,网站设定的输入时间限制较长,需要慢慢的准确输入。 lifolid 上图尤其要引起注意,这种类型的验证码是纯字母的,看到像数字7的一定是字母L,所以不要输错,毕竟打错是影响准确率的!
Cebus possession Hotchkiss 60-48s. $523.514 Linehan 此类验证码来自https://www.360docs.net/doc/a88532066.html,,需要区分大小写!即看到大写就录入大写,看到小写就小写录入!输入时两段码之间打一个空格。 比较繁琐的验证码,有空格,有"-",还有小数点"."和“$”等等符号。 3tx2x6u5 t3gtn8cs g6t5xhna hotmail的验证码系列,主流码出码在TT LA BO里,固定的8个字符(字母加数字混合),输入时间限制很长,可以慢慢输入。 bbyume4h ny8bp4 https://www.360docs.net/doc/a88532066.html,(雅虎)的验证码系列(字母加数字混合),输入时间限制很较短,需要快速录入,所以容易吃码。
FCYVEA 4DZTDT EEV3EW 此种验证码比较少见,来自荷兰egv网,具体是否必须区分大小写,不得而知,可以首选大写录入! rabresub miadocaill flystra frfajiv 这种类型的验证码是https://www.360docs.net/doc/a88532066.html,(谷歌)和其旗下https://www.360docs.net/doc/a88532066.html,(优兔贝视频站)的,红绿蓝三种颜色,东倒西歪,熟练了蛮好打的,小写输入。 grocery johntra forms 这也是超级繁琐的验证码,一般情况下上不多见,不必理会。 fihWnTO 注意:这类型的验证码需要区分大小写,PF类型验证码,即看到大写字母就输入大写字母,看到小写就小写,必须严格按照图片显示的字母输入!
实用的JavaScript验证码生成代码