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 xiaer
*
*/
public class ImageEnsure {
public ImageEnsure() {
}
private char mapTable[]={
'A','B','C','D','E','F',
'G','H','I','J','K','L',
'M','N','P','Q','R',
'S','T','U','V','W','X',
'Y','Z','0','1','2','3',
'4','5','6','7','8','9'};
public String getEnsure(int width, int height, OutputStream os) {
if(width<=0)width=60;
if(height<=0)height=20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(new Color(0xFCF000));
g.fillRect(0, 0, width, height);
//画边框
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
// 取随机产生的认证码
String strEnsure = "";
// 4代表4位验证码
for(int i=0; i<4; ++i) {
strEnsure += mapTable[(int)(mapTable.length*Math.random())];
}
// 将认证码显示到图象中
g.setColor(Color.black);
g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));
String str = strEnsure.substring(0,1);
g.drawString(str,8,17);
str = strEnsure.substring(1,2);
g.drawString(str,20,15);
str = strEnsure.substring(2,3);
g.drawString(str,35,18);
str = strEnsure.substring(3,4);
g.drawString(str,45,15);
// 随机产生50个干扰点
Random rand = new Random();
for (int i=0;i<50;i++)
{
int x = rand.nextInt(width);
int y = rand.nextInt(height);
g.drawOval(x,y,1,1);
}
// 释放图形上下文
g.dispose();
try {
// 输出图象到页面
ImageIO.write(image, "JPEG", os);
} catch (IOException e) {
return "";
}finally{
}
return strEnsure;
}
/*
public static void main(String []args) {
try{
BufferedOutputStream os = new BufferedOutputStream(
new FileOutputStream("c:\\test.jpg"));
new ImageEnsure().getEnsure(100, 200, os);
os.flush();
os.close();
} catch(Exception e) {}
}
*/
}
分享到:
相关推荐
NULL 博文链接:https://jk-3699.iteye.com/blog/1275139
一、关键技术 1.验证码简介 (1)验证码的作用 所谓验证码就是将一个随机数显示在一幅图片上,并在图片上产生干扰因素。验证码能够防止攻击者编写程序,自动注册,重复登录暴力破解密码等。 (2)验证码的...
web开发中,经常会使用验证码功能,例如登录、注册,或其他关键功能之前经常会使用。下面通过实例代码给大家介绍Web制作验证码功能实例代码,感兴趣的朋友一起看看吧
对一些简单验证码的识别工具 可以自定义验证码配置以达到通用的目的 使用者可以使用提供的dll或者命令行工具调用识别 从而实现一些自己的功能 文件包含全套工具、关键代码、使用说明文档.rar,太多无法一一验证是否...
对一些简单验证码的识别工具 可以自定义验证码配置以达到通用的目的 使用者可以使用提供的dll或者命令行工具调用识别 从而实现一些自己的功能 文件包含全套工具、关键代码、使用说明文档
该压缩包为使用邮箱发送验证码的实例,里面关键代码部分都有详细的注释。
只是一个思路,学习它的关键在于理解它的思想。
jsp页面关键代码 function changeValidateCode(obj){ var timeNow = new Date().getTime(); obj.src="checkCode/service.do?time="+timeNow; } .. .. (this)" title="刷新验证码" style="cursor: hand;" /...
代码中没有开放的文本表达式-所有的数据被加密 不需要WCF,缓存,.axd等。仅使用HtmlHelper和特定图片生成函数。 服务端可以完全自定义。你可以设置字体,大小,和其他的参数,通过修改web.config文件。如果不需要...
在php中实现验证码还是很方便的,关键点在于掌握php gd库与session的用法。 纵观网上php 生成验证码的例子,无不是php gd库与session相结合,并利用php 生成随机数的方法来完成。 PHP验证码,可以分为很多种,包括 ...
下面简要说明各个类的功能及关键代码。 1. iGbGen类:根据控制参数生成随机验证码串。 //解析控制参数 public string giveString(int[] control) { Save_chartxt(); if (control[2] == 1)...
在用爬虫爬取网站数据时,有些站点的一些关键数据的获取需要使用账号登录,这里可以使用requests发送登录请求,并用Session对象来自动处理相关Cookie。 另外在登录时,有些网站有时会要求输入验证码,比较简单的...
本文实例为大家分享了微信小程序发送验证码按钮效果展示的具体代码,供大家参考,具体内容如下 首先上图,最终效果如下: 实现关键点 获取验证码按钮无边框: 可以用 button::after{ border: none; } 来去除边框...
关键代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1,user-...
最近做注册的时候看到很多app在手机接受到短信的时候直接填写...贴出关键代码: 注册监听短信数据库的 ContentObserver c=new ContentObserver(han) { @Override public void onChange(boolean selfChange) { //
java实训作业CRM客户管理系统源代码。 教程如下: 导入数据库资源 w.sql 导入文件,可以通过网络拉取也可以下载之后导入,通过maven进行依赖包的下载,设置你的依赖路径 配置tomacat服务器环境,运行。 使用说明 ...
button里面包两个span标签,根据点击状态,显示不同的span,关键代码就是倒计时: <button @click=send> <span v-if=sendMsgDisabled>{{time+'秒后获取'}} !sendMsgDisabled>send </button> ...
越来越多的网站具有反爬虫特性,有的用图片隐藏关键数据,有的使用反人类的验证码,建立反反爬虫的代码仓库,通过与不同特性的网站做斗争(无恶意)提高技术。
下载项目代码,在webviews/sign/index.js中,第一行,关键文字中更改如下为自己的环境ID(一定要和前几步操作保持相同的环境ID)如果你要在本地去进行测试,要设置本地安全域名;预约的记录可以在数据库中SIGN集合...