会话中session实现一次性验证码(源码)
来源:互联网 发布:试吃报告淘宝 编辑:程序博客网 时间:2024/05/16 18:32
session案例一次性校验码
一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码。
服务器程序接收到表单数据后,首先判断用户是否填写了正确的验证码,只有该验证码与服务器端保存的验证码匹配时,服务器程序才开始正常的表单处理流程。
密码猜测工具要逐一尝试每个密码的前题条件是先输入正确的验证码,而验证码是一次性有效的,这样基本上就阻断了密码猜测工具的自动地处理过程。
下面就让我们看看源码:
一次性验证码源码:
package cn.csdn.web.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class ImageUtil {
private static final int WIDTH = 130;
private static final int HEIGHT = 25;
private static final int IMAGETYPE = BufferedImage.TYPE_INT_RGB;
public static String checkCode;
private static void setFont(Graphics g) {
//写汉字
String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740";
//写4个字
Color c = Color.BLUE;
g.setColor(c);
Font font = new Font("宋体", Font.ITALIC, 20);
g.setFont(font);
StringBuffer sb = new StringBuffer();
//产生汉字
for(int i=0;i<4;i++){
int location = new Random().nextInt(base.length()-1);
char chr = base.charAt(location);
sb.append(chr+"");
}
checkCode=sb.toString();
Graphics2D gd = (Graphics2D) g;
gd.rotate(0.05);
//把汉字写到图片上
g.drawString(checkCode, 10, 20);
}
private static void setRandomLine(Graphics g) {
Color c = Color.GREEN;
g.setColor(c);
for (int i = 0; i <= 4; i++) {
int x1 = new Random().nextInt(WIDTH);
int y1 = new Random().nextInt(HEIGHT);
int x2 = new Random().nextInt(WIDTH);
int y2 = new Random().nextInt(HEIGHT);
g.drawLine(x1, y1, x2, y2);
}
}
private static void setBorder(Graphics g) {
Color c = Color.BLACK;
g.setColor(c);
g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);
}
private static void setBackground(Graphics g) {
Color c = Color.WHITE;
g.setColor(c);
g.fillRect(0, 0, WIDTH, HEIGHT);
}
public static void outImage(OutputStream os) throws IOException{
// 2、创建图片
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, IMAGETYPE);
// 3、得到图型
Graphics g = image.getGraphics();
// 4、设置图片背景色
setBackground(g);
// 5、向图片上写边框
setBorder(g);
// 6、向图片上写干扰线
setRandomLine(g);
// 7、向图片上写数据
setFont(g);
// 8、把图片写给浏览器
ImageIO.write(image, "gif", os);
}
}
- 会话中session实现一次性验证码(源码)
- Session实现一次性验证码
- 一个利用Session实现一次性验证码
- 利用session实现一次性验证码
- 使用session实现一次性验证码
- 使用session实现一次性验证码
- 使用session实现一次性验证码
- 使用session实现一次性验证码
- 利用Session实现一次性验证码
- Session实现一次性验证码(十)
- Session实例:一次性验证码
- 2011-10-26 利用Session实现一次性验证码
- javaWEB总结(26):利用session实现一次性验证码
- session的典型案例三:实现一次性验证码
- 利用Cookie或URL实现Session跟踪-----利用Session实现一次性验证码
- 会话: 用户一次性登录(含验证码验证)
- Session案例一次性验证码登录
- servlet实现一次性验证码
- iOS 4.3 to iOS 5.0 API Differences
- Android 4.0的12大新特性
- Android 4.0 API新特性之OVERVIEW
- c#中MessageBox的使用
- 理解泛型
- 会话中session实现一次性验证码(源码)
- 网络拓扑结构设计(二)
- 网络拓扑结构设计(三)
- MyEclipse快捷键及经验总结 绝对的有用 太给力了
- 10个Python图表图形类库
- as3 updateAfterEvent的作用
- 网络拓扑结构设计(四)
- Web.xml配置详解
- 有时间了