Kaptcha现成图片验证码

Kaptcha现成图片验证码
Kaptcha现成图片验证码

1.导入kaptcha jar包。

2.Web.xml配置:

Kaptcha

com.google.code.kaptcha.servlet.KaptchaServlet

kaptcha.border

no

kaptcha.textproducer.font.color

green

kaptcha.image.width

120

kaptcha.textproducer.char.string

abcdefghigkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679

kaptcha.image.height

40

kaptcha.textproducer.font.size

30

kaptcha.noise.color

gray

kaptcha.textproducer.char.length

4

kaptcha.background.clear.from

gray

kaptcha.background.clear.to

gray

kaptcha.obscurificator.impl

com.google.code.kaptcha.impl.ShadowGimpy

Kaptcha

/kaptcha.jpg

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: "", //数据请求页面的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 map = ImageUtil.getImage();//获取图片,将图片转换成InputStream流 String key = map.keySet().iterator().next();//获取图片上的字符 BufferedImage image = map.get(key);//获取BufferedImage,赋值给imageStream其中,String为验证码的值,BufferedImage为验证码的图片。 该工具类的代码如下:ImageUtil.java package action; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; public final class ImageUtil { private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "东", "南", "西", "北", "中", "发", "白" }; private static final int SIZE = 5;//验证码长度 private static final int LINES = 20;//干扰线条数 private static final int WIDTH = 200;//图片宽度 private static final int HEIGHT = 100;//图片高度 private static final int FONT_SIZE = 60;//字体高度 public static Map getImage() { StringBuffer sb = new StringBuffer(); BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics graphic = image.getGraphics(); graphic.setColor(Color.LIGHT_GRAY); graphic.fillRect(0, 0, WIDTH, HEIGHT); Random ran = new Random(); //画随机字符 for(int i=1;i<=SIZE;i++){ int r = ran.nextInt(chars.length); graphic.setColor(getRandomColor()); graphic.setFont(new Font(null,Font.BOLD+Font.ITALIC,FONT_SIZE));

验证码的作用

验证码的作用 验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的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#生成随机验证码例子

C#生成随机验证码例子: 前端: 1 2 3验证码: 4 5 6 给验证码图片绑定单击事件: $("#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 }

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" %> <% String str = image.getCertPic(0,0,response.getOutputStream()); session.setAttribute("certCode", str); %> session.setAttribute("certCode", str); 是为了你的输入的时候和验证码是否相等 比如:在check.jsp中 String code=request.getParamerer("certCode"); If(code.equals((String)session.getAttribute("certCode"))) makeCertPic.java package util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; /** * @author dzy * 生成验证码图片 */ public class makeCertPic { //验证码图片中可以出现的字符集,可根据需要修改 private char mapTable[]={ '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','0','1','2','3', '4','5','6','7','8','9'}; /** * 功能:生成彩色验证码图片 * 参数width为生成的图片的宽度,参数height为生成的图片的高度,参数os为页面的

数字图像__验证码识别

一、数字图像处理基础 一幅图像可以定义为一个二维数组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验证码生成代码

实用的 JavaScript 验证码生成代码-JAVA:https://www.360docs.net/doc/a88532066.html,