「java验证制作」java随机生成验证码

博主:adminadmin 2023-01-16 17:18:06 460

今天给各位分享java验证制作的知识,其中也会对java随机生成验证码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA怎么做CRC校验的程序

实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。

应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。

应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。

bcc异或校验法(block check character)

实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。

校验值计算的代码类似于:

unsigned uCRC=0;//校验初始值

for(int i=0;iDataLenth;i++) uCRC^=Data[i];

适用范围:适用于大多数要求不高的数据通讯。

应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。 (Cyclic Redundancy Check)

实现方法:这是利用除法及余数的原理来进行错误检测的

java 登陆时的验证码怎么做?

后台写一个生成图片随机的代码,生成图片给前台。切换图片的时候,使用ajax获取图片数据就行。

附上生成图片的代码

public class ValidateCode {

private int width=180;

private int height=60;

private int codeCount = 4;

private int x = 0;

private int codeY;

private String Code;

private BufferedImage buffImg;

static char[] codeSequence = { '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','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', 'o', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

private int fontHeight;

public ValidateCode() {

x = width / (codeCount + 2);

fontHeight = height - 2;

codeY = height - 4;

CreateCode();

}

public void CreateCode(){

// 定义图像buffer

BufferedImage buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

Graphics2D g = buffImg.createGraphics();

// 创建一个随机数生成器类

Random random = new Random();

// 将图像填充为白色

g.setColor(Color.WHITE);

g.fillRect(0, 0, width, height);

// 创建字体,字体的大小应该根据图片的高度来定。

Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);

// 设置字体。

g.setFont(font);

// 画边框。

g.setColor(Color.BLACK);

g.drawRect(0, 0, width - 1, height - 1);

// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。

StringBuffer randomCode = new StringBuffer();

int red = 0, green = 0, blue = 0;

// 随机产生codeCount数字的验证码。

for (int i = 0; i codeCount; i++) {

// 得到随机产生的验证码数字。

String strRand = String.valueOf(codeSequence[random.nextInt(62)]);

// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。

red = random.nextInt(255);

green = random.nextInt(255);

blue = random.nextInt(255);

// 用随机产生的颜色将验证码绘制到图像中。

g.setColor(new Color(red, green, blue));

g.drawString(strRand, (i ) * x+20, codeY);

// 将产生的四个随机数组合在一起。

randomCode.append(strRand);

}

this.Code=randomCode.toString().toUpperCase();

this.buffImg=buffImg;

}

public String getCode() {

return Code;

}

public void setCode(String code) {

Code = code;

}

public BufferedImage getBuffImg() {

return buffImg;

}

public void setBuffImg(BufferedImage buffImg) {

this.buffImg = buffImg;

}

}

用java怎么制作验证码

原理:

1.随机生成4个数字 用到了Random类

2.对这4个数字设置字体格式 用 setFont方法

3.改变字体颜色用setColor 然后随机生成颜色

代码如下

package s1;

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.jms.Session;

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 GetImage 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 {

// 发送图片不能够添加这2行代码

// response.setContentType("text/html;charset=UTF-8");

// request.setCharacterEncoding("UTF-8");

int width=100;

int height=50;

//获得一张图片

BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics g=image.getGraphics();

g.setColor(Color.WHITE);

g.fillRect(1, 1, width-2, height-2);

g.setFont(new Font("宋体",Font.BOLD,30));

Random random=new Random();

// 填充的字符串

String str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

//缓存生成的验证码

StringBuffer stringbuffer=new StringBuffer();

//随机生成验证码的颜色和字符

for(int i=0;i4;i++)

{ //设置随机颜色

g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));

int index=random.nextInt(62);//这里的62就是从填充字符段中随意选取一个位置

String str1=str.substring(index,index+1);

g.drawString(str1, 20*i, 30);//x,y数值设置太小会显示不出来

stringbuffer.append(str1);

}

//将生成的验证码存到服务器

request.getSession().setAttribute("checkcode", stringbuffer.toString());//key和value

//将图片发送给浏览器

ImageIO.write(image, "jpg", response.getOutputStream());

}

}

用户登录界面代码

package s1;

import java.io.IOException;

import java.io.PrintWriter;

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 Login extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");// 设置服务器发送给浏览器的编码方式

request.setCharacterEncoding("UTF-8"); // 客户端向服务器提交的数据的解码方式

// 获得用户提交的数据

String checkcode = request.getParameter("checkcode");

System.out.println(checkcode);

// 判断输入的验证码是不是符合

HttpSession session = request.getSession();// session是存放数据的地方

String str = (String) session.getAttribute("checkcode");

if (str != null) {

if (checkcode.compareToIgnoreCase(str) == 0) // 验证码忽略大小写

response.getWriter().println("验证码输入正确");

else

response.getWriter().println("验证码输入错误");

}

else response.getWriter().println("验证码失效");

// 使用完的验证码信息要删除,返回原页面再输一次,验证码就失效了

session.removeAttribute("checkcode");

}

}

java验证制作的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java随机生成验证码、java验证制作的信息别忘了在本站进行查找喔。