import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ChineseCheckCode extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setContentType("image/jpeg");
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
int width=166;
int height = 80;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
Graphics g=image.getGraphics();
Random randome = new Random();
Font myFont = new Font("宋体",Font.ITALIC,26);
g.fillRect(0, 0, width, height);
g.setFont(myFont);
String sRand = "";
String ctmp = "";
String itmp = "";
for(int i=0;i<4;i++){
String[] rBase={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
int r1=randome.nextInt(3)+11;
String str_r1=rBase[r1];
int r2;
if(r1==13){
r2=randome.nextInt(7);
}else{
r2=randome.nextInt(16);
}
String str_r2=rBase[r2];
int r3=randome.nextInt(6)+10;
String str_r3=rBase[r3];
int r4;
if(r3==10){
r4=randome.nextInt(15)+1;
}else if(r3==15){
r4=randome.nextInt(15);
}else{
r4=randome.nextInt(16);
}
String str_r4=rBase[r4];
byte[] bytes = new byte[2];
String r12=str_r1+str_r2;
int tempLow=Integer.parseInt(r12, 16);
bytes[0]=(byte) tempLow;
String r34=str_r3+str_r4;
int tempHeigh=Integer.parseInt(r34, 16);
bytes[1]=(byte) tempHeigh;
ctmp=new String(bytes);
sRand+=ctmp;
Color color = new Color(20+randome.nextInt(110));
g.setColor(color);
g.drawString(ctmp, width/6*i+23, height/3);
}
HttpSession session=request.getSession(true);
session.setAttribute("randCheckCode", sRand);
g.dispose();
ImageIO.write(image, "JPEG", response.getOutputStream());
}
}
分享到:
相关推荐
### C#生成中文汉字验证码源码解析 #### 概述 验证码是一种常用的安全措施,用于区分用户是人类...尽管该方案具有一定的复杂度,但对于需要在Web应用程序中集成中文验证码功能的开发者来说,仍具有一定的参考价值。
中文汉字验证码是验证码的一种形式,其特点是使用中文汉字作为识别内容。这种验证码设计的初衷是为了增加机器识别的难度,因为汉字字符众多且形状复杂,相比数字或字母组合,更不易被自动化程序破解。中文汉字验证码...
【标题】: "适用于各种编程中文汉字验证码制作" 在编程领域,验证码是一种常见的安全机制,用于验证用户身份,防止自动脚本或者恶意机器人进行非法操作。中文汉字验证码因其独特的复杂性和难以被机器识别的特性,...
汉字验证码识别尤其具有挑战性,因为它涉及到中文字符的多样性以及图像处理的复杂性。下面将详细介绍图像分割、图像去噪和图像识别这三个关键知识点。 首先,图像分割是验证码识别的第一步,它的目标是将含有文字的...
汉字验证码是一种用于网络安全验证的技术,主要应用于论坛、网站后台等在线平台,以防止恶意自动化的机器人或爬虫程序进行非法操作。它通过显示一个由随机汉字组成的图像,要求用户输入看到的文字来验证其为真实的...
本文将深入探讨如何使用C#编程语言生成中文汉字验证码的基本原理,这对于提高网站安全性、防止自动化攻击具有重要意义。 ### 一、中文汉字编码基础 在生成中文汉字验证码之前,我们首先需要理解中文字符的编码方式...
中文验证码识别则是针对含有中文字符的验证码进行解析,增加了识别难度,因为汉字的数量庞大且形状复杂,使得机器识别相较于纯数字或字母的验证码更为困难。 在给定的资源中,我们看到有以下几个关键文件: 1. `cds...
php,验证码,汉字验证码,PHP汉字验证码
在ASP中生成汉字验证码是一项常见的安全措施,目的是防止自动化程序(如机器人)进行恶意操作,如注册、登录或提交表单。汉字验证码的使用增加了破解的难度,因为相比纯数字或字母,汉字具有更高的复杂性和多样性。 ...
根据提供的文件信息,本文将详细解析使用C#生成随机中文汉字验证码的基本原理和技术要点。 ### 一、中文编码标准 为了生成随机的中文汉字验证码,首先需要了解中文字符的编码方式。在中国,最常见的中文编码标准有...
汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码 汉字 验证码 英文 验证码
中文验证码由于其字符集的复杂性,增加了破解的难度,为网站的安全提供了额外的保障。 验证码的核心在于生成一串随机且难以通过机器自动识别的字符。在ASP中实现汉字验证码,我们需要以下几个关键步骤: 1. **汉字...
jsp验证码,jsp中文验证码,数字验证码,汉字验证码
在中文环境中,中文验证码则是使用中文字符来增加机器识别的难度,从而提高系统安全性。C#是一种广泛应用于Windows平台的面向对象的编程语言,它拥有丰富的库支持,非常适合开发这种类型的应用。 在C#中实现中文...
用C#生成随机中文汉字验证码的基本原理 (转载)