基于Java web中文验证码设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Java web中文验证码设计与实现

基于Java web中文验证码设计与实现   摘 要:随着互联网的迅速发展,随之而来的信息安全问题也日益突出。许多网站设计者在安全性上考虑不周全,导致网站安全事故频发,严重影响了网站的正常运行,带来了巨大的经济损失。论文探讨如何设计和实现基于Java Web环境下的中文验证码,旨在为此安全问题提供一种解决途径。   关键词:验证码;随机;安全   中图分类号:TP311.10 文献标识码:A 文章编号:1674-7712 (2014) 10-0000-01   一、验证码   验证码(CAPTCHA:Completely Automated Public Turing test to tell Computers and Humans Apart)最早由卡内基梅隆大学的Luis von Ahn、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford于2002年提出。它是一种区分用户角色,确认是否是人的公共全自动程序。   (一)验证码的作用   使用验证码可以防止有人利用广告软件散发垃圾信息,避免密码被黑客暴力破解,同时,也可以阻止恶意用户对网站进行重复发帖等。验证码能够有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,防止恶意破解密码、刷票、论坛灌水、刷页。   (二)随机汉字验证码的工作原理   第一步,由服务器端随机生成的验证码字符串。第二步,将生成的验证码保存在Web程序的session对象中。第三步,将session中的验证码字符串通过算法写入图片中,并发送给浏览器端并显示。第四步,用户根据自己看到的浏览器端显示的图片验证码,输入相应的验证码,然后提交给服务器。第五步,服务器端将用户输入提交的字符串和服务器端保存在session对象中的验证码字符串进行比较,若相同,则授权继续执行下面的代码段,从而完成后续操作,否则就组织程序使用后继功能。用户每次请求时,系统都会产生不同的字符串验证码,使得攻击者无法从浏览器端快速提取验证码信息,也很难用程序识别验证码,难以猜测其具体内容 这样就实现了辨别用户身份,阻挡攻击的目标。   二、基于Java Web的中文验证码码的实现   (一)实现过程   首先,通过程序随机生成规定字符数量的一级简码汉字,区码在16- 55之间,位码在1- 93之间,接下来将此汉字区位码生成对应的汉字,然后将生成的汉字通过算法进行扭曲,之后将文字字符写入预先构建的图片中添加干扰元素,之后输出到客户端。实现过程如图1所示。   (二)主要程序文件   主要文件包括index.jsp、code.jsp和YanZheng.java等,它们之间的关系如图2所示。   三、实现中文验证码   (一)生成汉字区位码的核心代码   public String getWordCode(int wordNum) {   int i = 1;   int j = 0;   Random random = new Random(System.currentTimeMillis());   int wordCodeByteNum = wordNum * 2;   int wordCodeArr[] = new int[wordCodeByteNum];   int wordHighByteScope = 55;   while (j wordCodeByteNum) {   i = random.nextInt(wordHighByteScope);   while (true) {   if (i 16) {   i = random.nextInt(wordHighByteScope);   } else {   break;   }   wordCodeArr[j] = i;   j += 2;   }   }   wordHighByteScope = 93;   j = 1;   while (j wordCodeByteNum) {   i = random.nextInt(wordHighByteScope);   while (true) {   if (i 16) {   i = random.nextInt(wordHighByteScope);   } else {   break;   }   wordCodeArr[j] = i;   j += 2;   }   }   String wordCode = new String();   for (i = 0; i wordCodeByteNum; i++) {   wor

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档