当前位置:首页 > Java

JAVA验证码如何验证

2026-04-09 01:02:27Java

JAVA验证码验证方法

验证码验证通常分为生成和验证两部分。以下是常见的验证码验证实现方法:

生成验证码

使用Servlet生成图片验证码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    int width = 100;
    int height = 40;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, width, height);

    // 生成随机验证码
    String chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
    StringBuilder sb = new StringBuilder();
    Random random = new Random();
    for (int i = 0; i < 4; i++) {
        int index = random.nextInt(chars.length());
        sb.append(chars.charAt(index));
    }
    String code = sb.toString();

    // 绘制验证码
    g.setColor(Color.BLACK);
    g.setFont(new Font("Arial", Font.BOLD, 20));
    g.drawString(code, 20, 25);

    // 存入session
    request.getSession().setAttribute("captcha", code);

    // 输出图片
    response.setContentType("image/jpeg");
    ImageIO.write(image, "jpeg", response.getOutputStream());
}

前端展示验证码

HTML中调用Servlet生成验证码图片:

<img src="/CaptchaServlet" onclick="this.src='/CaptchaServlet?d='+Math.random()">
<input type="text" name="captcha">

服务器端验证

在表单提交处理中验证验证码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String userCaptcha = request.getParameter("captcha");
    String sessionCaptcha = (String) request.getSession().getAttribute("captcha");

    if (userCaptcha == null || !userCaptcha.equalsIgnoreCase(sessionCaptcha)) {
        // 验证失败处理
        response.sendRedirect("error.jsp");
        return;
    }
    // 验证成功继续业务流程
}

使用第三方库

对于更复杂的需求,可以使用Kaptcha等专门库:

  1. 添加Maven依赖:

    <dependency>
     <groupId>com.github.penggle</groupId>
     <artifactId>kaptcha</artifactId>
     <version>2.3.2</version>
    </dependency>
  2. 配置Kaptcha:

    @Bean
    public Producer kaptchaProducer() {
     Properties properties = new Properties();
     properties.setProperty("kaptcha.image.width", "100");
     properties.setProperty("kaptcha.image.height", "40");
     // 其他配置...
     DefaultKaptcha kaptcha = new DefaultKaptcha();
     Config config = new Config(properties);
     kaptcha.setConfig(config);
     return kaptcha;
    }

安全注意事项

验证码实现时应注意:

  • 验证码应设置有效期(通常5-10分钟)
  • 验证码使用后应立即从session中移除
  • 避免使用简单数学运算作为验证码
  • 对验证码请求频率进行限制防止暴力破解

移动端验证码

对于短信验证码验证:

JAVA验证码如何验证

// 生成6位数字验证码
String smsCode = String.format("%06d", new Random().nextInt(999999));
// 存储到Redis并设置过期时间
redisTemplate.opsForValue().set("sms:"+phone, smsCode, 5, TimeUnit.MINUTES);
// 验证时比较用户输入和Redis中的值

以上方法涵盖了从简单图片验证码到短信验证码的常见验证场景实现方案。

标签: 验证码JAVA
分享给朋友:

相关文章

uniapp图形验证码

uniapp图形验证码

uniapp 图形验证码实现方法 在 uniapp 中实现图形验证码功能可以通过多种方式完成,以下是几种常见的实现方案: 使用第三方验证码服务 接入第三方验证码服务如极验、腾讯云验证码等,这些服务通…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

php验证码怎么实现

php验证码怎么实现

使用GD库生成验证码 PHP的GD库可以用于生成验证码图片。以下是实现步骤: 1. 创建画布并设置背景 $width = 100; $height = 30; $image = image…

php如何实现验证码

php如何实现验证码

生成验证码图片 使用 PHP 的 GD 库创建验证码图片。通过 imagecreatetruecolor() 函数创建一个空白画布,设置背景色和文本颜色。利用 imagestring() 或 imag…

js登录验证码实现

js登录验证码实现

验证码生成与显示 使用HTML5 Canvas生成图形验证码,通过随机生成字符和干扰元素增强安全性。以下为基本实现代码: function generateCaptcha() { const c…

js实现汉字验证码

js实现汉字验证码

实现汉字验证码的步骤 生成随机汉字 使用Unicode编码范围生成随机汉字,汉字的Unicode范围大致在\u4e00到\u9fa5之间。 function getRandomChinese() {…