精华内容
下载资源
问答
  • 怎样用java实现验证码

    2019-09-17 15:51:51
    现在许多系统的注册、登录或者发布信息模块都添加的随机 验证码 功能,就是为了避免自动注册程序或者自动发布程序的使用。 验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时...
    现在许多系统的注册、登录或者发布信息模块都添加的随机 验证码 功能,就是为了避免自动注册程序或者自动发布程序的使用。 
    验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加 自动识别验证码 的难度。 

    在这里,我们使用java实现验证码。 

    <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
    <%!
    Color getRandColor(int fc,int bc){//给定范围获得随机颜色
             Random random = new Random();
             if(fc>255) fc=255;
             if(bc>255) bc=255;
             int r=fc+random.nextInt(bc-fc);
             int g=fc+random.nextInt(bc-fc);
             int b=fc+random.nextInt(bc-fc);
             return new Color(r,g,b);
             }
    %>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);

    // 在内存中创建图象
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    // 获取图形上下文
    Graphics g = image.getGraphics();

    //生成随机类
    Random random = new Random();

    // 设定背景色
    g.setColor(getRandColor(200,250));
    g.fillRect(0, 0, width, height);

    //设定字体
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));


    // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155;i++)
    {
             int x = random.nextInt(width);
             int y = random.nextInt(height);
             int xl = random.nextInt(12);
             int yl = random.nextInt(12);
             g.drawLine(x,y,x+xl,y+yl);
    }

    // 取随机产生的认证码(4位数字)

    String codeList = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

    String sRand="";


    for (int i=0;i<4;i++){
      int a=random.nextInt(codeList.length()-1);
          String rand=codeList.substring(a,a+1);
          sRand+=rand;
         // 将认证码显示到图象中
         g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
         g.drawString(rand,13*i+6,16);
    }

    // 将认证码存入SESSION
    session.setAttribute("rand",sRand);

    // 图象生效
    g.dispose();

    // 输出图象到页面
    ImageIO.write(image, "JPEG", response.getOutputStream());
    out.clear();
    out = pageContext.pushBody();


    %>

    前台显示 然后将验证码放入session  后台从session中提取即可
    文章出自:http://www.zhima365.com/shownews.php?id=370

    转载于:https://my.oschina.net/zhima365/blog/135775

    展开全文
  • 验证码

    2019-06-01 22:19:31
    首先了解到的是验证码是由服务端产生,以图片的形式展示在客户端或页面,用户端的用户根据图片识别验证码,并进行注册提交,提交的验证码在服务层进行校验,如果校验成功,则用户注册成功并登陆,如果失败,请用户...

    ##验证码的大致原理
    首先了解到的是验证码是由服务端产生,以图片的形式展示在客户端或页面,用户端的用户根据图片识别验证码,并进行注册提交,提交的验证码在服务层进行校验,如果校验成功,则用户注册成功并登陆,如果失败,请用户重新注册。然后想一想这些图片是怎样生成的,验证码如何设计的,验证码为什么要设计成图片的格式,而且人们肉眼都难以识别其中的验证码。

    图片是在服务端随机产生,这些图片可以通过设置规定他们的高度和宽度,然后再图片上绘制一些干扰线,当然,干扰线的数量也是可以控制的,不同验证码插件或者不同的网站验证码图片的干扰程度不同,一般来说干扰程度越高,防止恶意攻击的效果会更好一些。但是用户识别起来也会增加难度,制造干扰线也是防止别人编写程序识别图片中的验证码或者通过某种机器提取图片中的验证码,来进行恶意注册或搞破坏。如果人眼都不能一眼轻易识别图片中的验证码,相信机器的识别度在比人眼低的情况下,不容易获取图片中的验证码。图片上的验证码可以是数组和大小写字母的组合,也可以是汉字的形式,这些字符都是随机产生并进行拼接的。实现验证功能的图片合成之后,会转换为一串字符串,然后以字节数组输出流的形式传送到前端,并显示在页面的相应位置。不是,该验证码产生的同时,会伴随产生它的唯一标志的id,过期时间,然后这些数据一般会一同封装到服务端的缓存中,到用户输入验证码并返回时,在服务端进行校验,并把校验的结果返回到前端界面。这些是验证码的大致原理

    接下来就是我的代码了,是怎么实现的

    1、登录页面 index.jsp

       <%@ page language="java" contentType="text/html; charset=UTF-8"
        	pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>登录页面</title>
        <style type="text/css">
        *{
        	magin: 0 auto;
        	padding: 0px;
        }
        
        form{
        	width: 400px;
        	margin: 100px auto;
        
        }
        </style>
        </head>
        <body>
        	<form method=post action="result.jsp">
        		<input type=text name=input maxlength=4> 
        		 <img src="image.jsp" id="identity" onload="btn.disabled=false;" />
        		<input type=button value="换一张" onclick="reloadImage()" id="btn"></br>
        		 <input type="submit" value="提交">
        	</form>
        	
        <script type="text/javascript">
        	function reloadImage(){
           document.getElementById('btn').disabled=true;
           document.getElementById('identity').src='image.jsp?ran'+Math.random();
        }
        </script>
        </body>
        </html>
        
    
    

    2、生成验证码图片页面 image.jsp

    [code=html]<%@ page contentType="image/JPEG"
    	import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
    	pageEncoding="UTF-8"%>
    	
    //生成验证码图片页面 
    //首先,验证码其实就是在服务端产生一张带有验证码数字或者算式的图片,所以,在这个过程要用到gui知识	
    <%!Color getRandColor(int fc, int bc) {
    					
    		//给定范围获得随机颜色   
    		Random random = new Random();
    		if (fc > 255)
    			fc = 255;
    		if (bc > 255)
    			bc = 255;
    		int r = fc + random.nextInt(bc - fc);
    		int g = fc + random.nextInt(bc - fc);
    		int b = fc + random.nextInt(bc - fc);
    		return new Color(r, g, b);
    	}%>
    <%
    	 //1、验证码界面
    	//设置页面不缓存   
    	//因为某些浏览器缓存验证码,导致重新打开该页面时总提示验证码过期。
    
    	response.setHeader("Pragma", "No-cache");
    	response.setHeader("Cache-Control", "no-cache");
    	response.setDateHeader("Expires", 0);
    
    	// 在内存中创建图象   
    	int width = 60, height = 20; //验证码的宽和高  
    	//定义画布
    	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    
    	//得到画笔   在图片中绘制内容  
    	Graphics g = image.getGraphics(); //方法获取画笔,  
    
    	//1.设置颜色,画边框   
    	g.setColor(getRandColor(200, 250));
    	g.drawRect(0, 0, width - 1, height - 1);
    	//2.设置颜色,填充内部   
    	g.setColor(getRandColor(200, 250));
    	g.fillRect(0, 0, width, height);
    
    	//设定字体   
    	g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
    
    	//2、产生随机数
    	//生成随机类   
    	Random random = new Random();
    	// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到   
    	g.setColor(getRandColor(160, 200));
    	for (int i = 0; i < 100; i++) {
    		int x = random.nextInt(width); // 起点的x坐标  
    		int y = random.nextInt(height); // 起点的y坐标 
    		int xl = random.nextInt(12); // x轴偏移量  
    		int yl = random.nextInt(12); // y轴偏移量  
    		g.drawLine(x, y, x + xl, y + yl);
    	}
    
    	
    	//随机产生4位验证码  
    	String[] codes = { "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K",
    			"L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
    	// 该变量用来保存系统生成的随机字符串 
    	String sRand = "";
    	for (int i = 0; i < 4; i++) {
    		// 取得一个随机字符  
    		String rand = codes[random.nextInt(codes.length)];
    		sRand += rand;
    		// 将认证码显示到图象中  将系统生成的随机字符添加到图形验证码图片上  
    		g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成   
    		g.drawString(rand, 13 * i + 6, 16);
    	}
    
    	//3、发送验证码图片数据
    	// 将认证码存入SESSION 将系统生成的图形验证码添加 
    	session.setAttribute("code", sRand);
    
    	// 图象生效   
    	g.dispose(); //释放与Graphice2D有关的对象的资源  
    
    	// 输出图象到页面 ImageIO 读取图片    // 输出图形验证码图片
    	ImageIO.write(image, "JPEG", response.getOutputStream());
    	//加上下面代码,运行时才不会出现java.lang.IllegalStateException: getOutputStream() has already been called ..........等异常  
    	response.getOutputStream().flush();    
    	response.getOutputStream().close();  
    	response.flushBuffer();
    	out.clear();
    	out = pageContext.pushBody(); 
    

    3、生成验证码图片页面 result.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- 结果页面 -->
    <!-- JAVA绘制图片,然后将验证码的字符上传session,在登陆时候验证session 里的值和用户输入的值即可。 -->
    <%   
    //从页面获取输入的值
        String input=request.getParameter("input");   
        String code=(String)session.getAttribute("code");       
        if(input.equals(code)){   
            out.println("验证成功!");   
        }else{   
            out.println("验证失败!");   
        }   
    %>  
    </body>
    </html>
    

    ###4、运行后的果在这里插入图片描述 在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    有什么不行的地方,欢迎大家给我指出!谢谢!

    展开全文
  • 今天公司提出一个需求,要在现有项目上收集注册用户的真实手机号,由于之前没有接触过...3 代码实现首先到互亿无线短信平台注册一个帐号,并登录到用户中心,选验证码模块下载接口文档,文档下载下来是一个压缩包,...

    今天公司提出一个需求,要在现有项目上收集注册用户的真实手机号,由于之前没有接触过这一块,只能寻求度娘的帮助,经过一天的努力,终于完成了,现整理记录下已备查阅。

    1 解决方案:在注册时要求用户进行手机验证。
    2 寻找短信供应商:由于对这一块不是太懂,大学同学推荐一家他们公司在用的给我。
    3 代码实现
    首先到互亿无线短信平台注册一个帐号,并登录到用户中心,选验证码模块下载接口文档,文档下载下来是一个压缩包,我们项目是用PHP开发的,直接找到目录DEMO/PHP/OOP

    提示:开始之前先看一下官方对接说明文档

    第一步 把前端html代码整合到注册页面
    html 代码:

    <form action="index.php" method="post" name="formUser">
    <table width="100%" border="0" align="left" cellpadding="5" cellspacing="3">
    <tr>
    <td align="right">手机</td>
    <td>
    <input id="mobile" name="mobile" type="text" size="25" class="inputBg" /><span style="color:#FF0000"> *</span>
    </td>
    </tr>
    <tr>
    <td align="right">验证码</td>
    <td>
    <input type="text" name="gd_code" class="inputBg" size="25" id="gd_code">
    <span> <img src="code.php" onClick="javascript:this.src=this.src+'?date='+Date();"></span>
    </td>
    </tr>
    <tr>
    <td align="right">手机验证码</td>
    <td align="left">
    <input type="text" name="mobile_code" class="inputBg" size="25" />
    <input id="zphone" type="button" value=" 获取手机验证码 " style="width: 120px" onClick="get_mobile_code()">
    </td>
    </tr>
    <tr>
    <td align="right"></td>
    <td><input type="submit" value=" 注册 " class="button"></td>
    </tr>
    </table>
    </form>

    javascript代码

    <script language="javascript">
    function get_mobile_code(){
    $.post('reg.php?send_sms=1', {mobile:jQuery.trim($('#mobile').val()),send_code:$("#gd_code").val()}, function(msg) {
    alert(jQuery.trim(unescape(msg)));
    if(msg =='提交成功'){
    RemainTime();
    }else{
    // location.reload();
    }
    });
    };
    var iTime = 59;
    var Account;
    function RemainTime(){
    document.getElementById('zphone').disabled = true;
    var iSecond,sSecond="",sTime="";
    if (iTime >= 0){
    iSecond = parseInt(iTime%60);
    iMinute = parseInt(iTime/60)
    if (iSecond >= 0){
    if(iMinute>0){
    sSecond = iMinute + "分" + iSecond + "秒";
    }else{
    sSecond = iSecond + "秒";
    }
    }
    sTime=sSecond;
    if(iTime==0){
    clearTimeout(Account);
    sTime='获取手机验证码';
    iTime = 59;
    document.getElementById('zphone').disabled = false;
    }else{
    Account = setTimeout("RemainTime()",1000);
    iTime=iTime-1;
    }
    }else{
    sTime='没有倒计时';
    }
    document.getElementById('zphone').value = sTime;
    }

    </script>

    第一步 把后端php代码整合到程序逻辑中。
    注意:把sms.class.php、code.php、config.ihuyi.php、font.ttf这四个文件要上传到项目路径下

    session_start();
    date_default_timezone_set("PRC");

    if(!empty($_GET['send_sms'])){
    include('sms.class.php');
    $sms = new ihuyi_sms;
    $sms -> send_sms($_POST['mobile'],$_POST['send_code']);
    die;
    }

    if($_POST){
    if($_POST['mobile']!=$_SESSION['mobile'] or $_POST['mobile_code']!=$_SESSION['mobile_code'] or empty($_POST['mobile']) or empty($_POST['mobile_code'])){
    exit('手机验证码输入错误。');
    }else{
    $_SESSION['mobile'] = '';
    $_SESSION['mobile_code'] = '';

        //注册逻辑
    
        exit('注册成功。');
    }

    }

    转载于:https://blog.51cto.com/14024619/2305057

    展开全文
  • 怎样给手机发送短信验证码

    千次阅读 2019-04-28 22:52:07
    2、网址:http://www.monyun.cn/account/new_activity.html#B_vid=14000372792667055753,好处是注册之后会赠送200条免费短信,测试是足够了。 3、下载JavaSmsSdk.jar,修改SDKDemoUtil中的发送账号和密码,调...

    1、首先你得去短信平台申请账户,我之前用的是梦网云短信平台,这里也是讲用梦网云短信平台发送短信。

    2、网址:http://www.monyun.cn/account/new_activity.html#B_vid=14000372792667055753,好处是注册之后会赠送200条免费短信,测试是足够了。

    3、下载JavaSmsSdk.jar,修改SDKDemoUtil中的发送账号和密码,调用工具类SDKDemoUtil的sendMsg(String phone,String code),传入手机号码和生成的随机验证码,即可发送短信。备注:SDKDemoUtil地址:https://blog.csdn.net/qq_42489221/article/details/81070782

    4、生成随机手机验证码请参考 https://blog.csdn.net/qq_42489221/article/details/81074653

    展开全文
  • 文/山西康德短信01【收短消息需要注意】现在有时候我们会偶尔收到你已经在某某网站注册验证码,下面附带的连接,有些人担心是出现了什么情况,总是会点进去看看。其实这个连接就是一个钓鱼链接,你点进去后,会...
  • discuz的验证码怎样被破解的

    千次阅读 2009-11-21 16:52:00
    今天改程序,无意中在discuz的注册页面停留了一下,看到他那个验证码,我忽然想到前段时间一个论坛开起了验证码,仍然被spam疯狂注册,一个月被注册了2000多个帐号! 应该说这个验证码已经挺复杂的,主要是字体比较...
  • Completely Automated Public Turing ...它可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试等。 虽然网上有一些很不错的验证码开源插件如...
  • 关于滑动验证码的作用这里就不说了,应该都知道,下面就开始叙述一下怎样使用阿里云的滑动验证码。 这是阿里云滑动验证码的样式 (如果觉得不好看。还可以自己自定义样式) 第一步 登陆阿里云账号 登陆阿里云账号,...
  • 验证码破解

    2015-08-08 00:54:45
    验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入...
  • Java 生成验证码

    2019-07-26 10:43:00
    在登录或者注册页面时,往往会要求输入验证码,这样做可以提高安全性。那么,用java怎样来生成这个验证码呢? @Controller public class CodeController { @Autowired private StringRedisTemplate ...
  • 验证码的使用

    2011-05-25 09:31:00
    验证码俯拾皆是,也各有千秋,下面就来研究一下怎样使用验证码吧。 1.使用验证码的好处 验证码以不规则的形式存在于一个混合了许多干扰像素的图片,人眼看起来都费劲,机器识别起来就更困难。 它可以有效...
  • 简单验证码识别

    2013-01-23 14:57:33
    验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入...
  • 短信验证码工作原理

    2019-07-07 23:02:00
    我们的在注册各大网站或者APP的时候,经常会遇到填写验证码的情况。验证码的设置是平台为了验证用户身份而专门设置的安全机制。那么,问题来了:短信验证码在网络上的工作流程是怎样的呢? 短信验证码内部工作流程 ...
  • 识别验证码方法

    2011-12-30 14:41:22
    验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入...
  • 验证码的前世今生

    千次阅读 2018-05-17 17:39:28
    而在实际的应用中,验证码到底充当着怎样角色?什么是验证码了解“验证码”,自然要从它的诞生谈起。作为验证码程序的提出者,路易斯·冯·安(Luis von Ahn)和他的小伙伴在卡内基梅隆第一次提出了CAPTCHA(验证码)...
  • 大家说说验证码

    2009-01-22 12:46:00
    这不是一篇关于技术的文章,不是一篇讨论怎样实现验证码的文章,这是一篇关于用户体验的讨论文章。 事情的起因是这样的,今早我在做早饭,老师说网上交点话费,就去注册一个建行网上银行,本来今天老师就有事要用...
  • 验证码识别技术导论

    2013-01-21 23:33:00
    http://验证码识别.com/author/admin/ 验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。...学习验证码的破解/识别技术,不仅可以知道验证码的原理,而且可以让你知道怎样才能防止验证码被...
  • 验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入...
  • 图形验证码的生成和破解

    万次阅读 2012-05-12 21:28:51
    验证码的功能一般是防止使用程序恶意注册、暴力破解或批量发帖而设置的。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入...
  • java实现验证码步骤

    2014-12-29 21:32:10
    思考原因:验证码仿佛在网页注册中出现的频率很高,但为什么会要使用验证码,又怎样实现的?这一系列的问题引起了我的好奇。 于是,我查相关资料。 相关资料: 验证码(CAPTCHA)是“Completely Automated Public ...
  • SSH图形验证码的生成

    2021-03-02 18:58:06
    现在的登录或者注册大部分采用了手机短信验证码验证,很少使用画图的验证码验证,但是我们还是要知道一下怎么画图生成验证码的,主要是让我们看图,然后在输入框内填写自己看到的英文或者数字组合,看下图: ...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

怎样注册验证码