专栏首页程序猿的大杂烩使用Java制作验证码

使用Java制作验证码

验证码介绍

  验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个***对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。验证码这个词最早是在2002年由卡内基梅隆大学的路易斯·冯·安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。卡内基梅隆大学曾试图申请此词使其成为注册商标, 但该申请于2008年4月21日被拒绝。一种常用的CAPTCHA测试是让用户输入一个扭曲变形的图片上所显示的文字或数字,也就是图文验证码,扭曲变形是为了避免被光学字符识别(OCR, Optical Character Recognition)之类的电脑程序自动辨识出图片上的文数字而失去效果。由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,人们有时称CAPTCHA是一种反向图灵测试。为了无法看到图像的身心障碍者,替代的方法是改用语音读出文数字,为了防止语音辨识分析声音,声音的内容会有杂音,这种就是手机语音验证码,通过拨打手机的方式告诉用户验证码是什么。

目前常见的验证码类型:

    静态图文验证码

    手机短信验证码

    Email验证码

    拼图验证码

    手机语音验证码

    GIF动态图片验证码

    视频验证码

图文验证码

可以说最早出现的验证码就是图文验证码,也是最为常见的验证码形式。如图:

 验证码是从服务端生成后发送到客户端的,验证码绝非是套用现成的图片,而是在服务端内存中临时生成的,而且通常生成并发送给客户端之后就会删除,除此之外验证码都是有一个有效时间的一般为60秒到360秒,这些都是为了保证安全性。在Java中的java.awt包下有与绘画相关的类,利用这些工具类,可以生成简单的图文验证码。下面使用实际代码演示一下如何生成一个简单的图文验证码:

运行结果:

把验证码应用在登录验证中:

Html代码示例:

验证码Servlet:

处理登录业务的Servlet:

运行结果:

控制台打印结果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 调用语音验证码的接口与图形验证码框架

      语音验证码就是以打电话的方式,通过电话语音播报的方式把验证码告诉给用户,语音验证码使用的不多。

    端碗吹水
  • MongoDB分片搭建

    分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基...

    端碗吹水
  • cron,chkconfig工具,systemd管理服务,unit介绍,target介绍

    在Linux系统当中任务计划是必不可少的,因为有时候可能需要凌晨的时候去做一些操作,例如要执行shell脚本、备份文件、执行某个命令等等。我们需要设定一个时间去...

    端碗吹水
  • 小小验证码,作用可真不小!

    我们在开发用户登录功能的时候,总是会被要求加一个验证码的功能!那么,为什么要加这个验证码?验证码有什么作用?常见的验证码有哪些?

    Java旅途
  • 干货 | 图形验证码在携程的实践之路

    作者简介 闵杰, 携程信息安全部产品经理。2015年加入携程,主要负责黑产防刷,验证码,反爬以及UGC方面的产品设计,关注在低成本的前提下,解决以上场景的实际问...

    携程技术
  • Yii1.0 不同页面多个验证码的使用实现

    当业务A页面有验证码,且业务B页面也需要验证码。这个时候,如果A和B共用一个验证码,则会出现这种情况: A页面出现验证码,这个时候打开B页面验证码,再回到A页...

    砸漏
  • 09. 验证码暴力破解

    客户端发起请求->服务端响应并创建一个新的SessionID同时生成随机验证码,将验证码和SessionID一并返回给客户端->客户端提交验证码连同Sessio...

    汤青松
  • 基于GAN的验证码识别工具,0.5秒宣告验证码死刑!

    这是一个比较棘手的问题,多年来,这个问题的解决方案一直就是“验证码”,就是看看你能够能成功识别一系列机器无法识别的扭曲字符。这类安全验证工具被称为“CAPTCH...

    新智元
  • 如何设计相对安全的图形验证码?

    验证码(CAPTCHA)即“Completely Automated Public Turing test to tell Computers and Huma...

    宜信技术学院
  • 【实战篇】记一次登陆窗口的漏洞挖掘

    注:有时候重放报文提示“验证码错误”,还可尝试直接删除整个验证码字段,看是否报错。

    一名白帽的成长史

扫码关注云+社区

领取腾讯云代金券