`
angkorpeach
  • 浏览: 119443 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA验证码原理及实现

阅读更多

不得不承认,网络确实是个好东西,只要在google或百度上搜索一下“java验证码”,就可以找到无数实现代码,但却很少有文章很仔细的讲解到底是如何实现验证码的生成的,比如现在要自己写一个生成验证码的java类,首先要想到什么,然后想到什么,需要用到java API里的哪些类及其方法,等等。就算在在搜索条件中加上“原理”二字,能搜到的相关的文献也相当的少!或许是网上那些写得出代码的人觉得这个原理很简单,根本就不用多讲,只要研读他们写的代码就可以学会了,但是我属于那种很容易思维定势的人,只要看了别人的代码,我就会很容易跟着别人的思维走,自己就完全没想法了。又或许是大家都觉得网上既然这么多,又何必自己去写,索性干脆不去了解其原理。我就是这样。我以前也工作过,那时候为了赶项目,需要验证码的时候就直接去网上copy了一分,改一下,然后交差,那时候似乎还洋洋自得,因为不仅完成了任务还潜移默化的认为是自己能力不错,感觉自己很了不起。直到有一天在研究生院里看到一位师兄做毕业论文的时候,发现他们要做一个东西,并不是去网上直接看代码,而是去先去找一些与自己要做的东西相关的实现原理方面的书,然后自己动手写代码。他们的行为提醒了我,我也是马上要读研的人,不能再想以前一样靠着CTRL+CCTRL+V混日子了,否则自己永远是一个“半路出家的和尚”,被人小视,找不到好工作。

由于种种原因,我决定这次自己尝试一下写一个生成验证码的类,不管好不好,至少自己努力了。也就是在写这个代码的过程中,我才发现,虽然工作了两年,一直在写java程序,但是事实上自己基础是如此的差!!!希望自己能从写这个小东西开始,能改变自己对待研发的态度和对待学习的态度,从而让自己不断进步!

代码这里就补贴了,以附件的形式上传。

分享到:
评论
1 楼 angkorpeach 2011-07-18  
纠正代码中的一个错误,之前VerificationCode.java文件中有一个方法
private int getRandomNumber(int minRange,int maxRange){
	Random random = new Random((long)minRange);
	int num = random.nextInt(maxRange);
	return num;
}


应该改成:
private int getRandomNumber(int minRange,int maxRange){
	Random random = new Random();
	int num = random.nextInt(maxRange - minRange);
	return num + minRange;
}


原因是:这次再查阅了API的时候我才明白 new Random((long seed) 并不是在一个基数上产生随机数,要产生两个数之间的随机数应该采用我修改后的方法。

相关推荐

    Java实现点击文字验证码与拖动/滑动图片验证码(源码+demo+单元测试+实现思路)

    3.1.JAVA掌握AWT的BufferedImage、Graphics2D、Font;Redis;图片生成随机位置 随机中文文字、随机抠图、拼图都只需要用到BufferedImage和Graphics2D。 3.2.前端熟悉点击事件,根据点击事件的坐标位置、图片的位置...

    java图片滑动验证(登录验证)原理与实现方法详解

    主要介绍了java图片滑动验证(登录验证)原理与实现方法,结合实例形式详细分析了java图片滑动登录验证的相关原理、实现方法与操作技巧,需要的朋友可以参考下

    java用servlet实现登陆验证码

    一个小的例子,里面有纯4位数字验证码,还有大小写字母和数字混合验证码,帮助各位理解验证码的生成原理

    java实现汉字验证码

    今天整理了一个java实现的汉字输入验证码 主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确 实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用...

    Java汉字随机验证码

    主要包含两个类,一个是...实现原理比较简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成的验证码图片进行展示,验证的时候就获取文本框输入的值传到后台与session值进行比较,功能就怎么简单。

    Java Web开发过程中登陆模块的验证码的实现方式总结

    验证码及它的作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、...

    java 连接数据库实现用户登录功能

    java 连接数据库实现用户登录功能 能运行成功,适合初学者借鉴学习。

    java实现验证码类生成中文验证码

    java实现的汉字输入验证码,主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确,实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框值和session值...

    Java Web中随机汉字扭曲验证码的实现.pdf

    介绍验证码的工作原理,讨论了目前验证码存在的问题,提出了在java Web中实现随机生成扭曲中文验证码的方法和具体的实验过程。

    java实现工作流

    5.4.9 营业厅的主要函数实现(luruhander.java) 28 5.4.10 收费厅的主要函数接口 32 5.5 管理员登陆模块 33 5.5.1 管理员登录 33 5.6 营业厅管理模块 36 5.6.1 Left.jsp页面 36 5.6.2 Work.jsp 40 5.6.3 ...

    实验五 AJAX开发及JSP验证码

    1.在实验四基础上使用AJAX技术实现异步登录功能。(40分) Ajax异步的特点为:多个事件并行发生,事件互不影响,请求之后,不刷新整张页面,页面不动,只是刷新页面的局部。异步数据获取技术 XMLHttpRequest对象方法...

    Java图片二值化的原理

    一直以来对Java的图形处理能力表无力,但好像又不是那么一回事,之前用PHP做过一些应用,涉及到验证码的识别,其中有个图片二值化的步骤,今天换成Java来实现下 在java的扩展包javax.imageio中为我们提供了一个类...

    java实现短信验证登入实例

    JAVA实现短信验证登入,手机接收短信进行验证登入,不懂原理的请参考https://blog.csdn.net/u013850042/article/details/73276806

    selenium篇之滑动验证码.docx

    现在出现了一种通过用户鼠标移动滑块来填补有缺口图片的验证码,我们叫做滑动验证码。它的原理很简单,首先生成一张图片,然后随机挖去一块,在页面展示被挖去部分的图片,再通过js获取用户滑动距离,以及坐标等信息...

    一篇不错的关于java工作流方面讲解及代码

    5.4.9 营业厅的主要函数实现(luruhander.java) 28 5.4.10 收费厅的主要函数接口 32 5.5 管理员登陆模块 33 5.5.1 管理员登录 33 5.6 营业厅管理模块 36 5.6.1 Left.jsp页面 36 5.6.2 Work.jsp 40 5.6.3 ...

    JAVA高并发高性能高可用高扩展架构视频教程

    Java验证码 正则黑名单爬虫系统 深入数据库连接池内部运转原理 分布式服务下的交易一致 企业必备技能之面向服务编程Web-Service详解 分布式服务下的交易一致性原理及解决 分布式服务框架(dubbo+zookpeer) WEB高级前...

    验证码工程源码

    在一个系统或项目中,登录时,验证码是不必可少,一来可以为安全登录多了一层保障,二则防止网络的攻击。验证码的生成有多种,有JS实现,也有框架自带,也有用开发语言实现,...以下介绍下java实现验证码的原理及过程。

    验证码的实现

    验证码的实现原理,详细介绍验证码的实现方式,对于开发者比较有学习意义

    java实现验证码功能源码-LazySeq:Java8的惰性序列实现

    java实现验证码功能源码 Java 8 的惰性序列实现 介绍 惰性序列是一种数据结构,仅在实际需要其元素时才进行计算。 对惰性序列的所有操作,如map()和filter()也是惰性的,将调用推迟到真正需要的那一刻。 惰性序列...

Global site tag (gtag.js) - Google Analytics