登陆验证码

网络上有很多上网账号,都带有一定安全性,为什么呢?登陆的时候为什么要写用户名,密码,但是为什么登陆银行账号等涉及机密的账号时,都需要验证码呢?

懂得编程的人都知道正常情况下截取他人的登陆密码是一件非常轻而易举 的事,但是有什么方法能防止他人盗用密码呢?对了,就是用验证码。

验证码真的能防止他人盗取账号及密码吗?现在我告诉你,真的可以。

为什么验证码能防止别人盗用账号及密码呢?这是由于验证码采用的是图片的形式来绘制的。在图片上面加上随机的验证码时,在验证的时候,不是把验证码传到控制器,而是将图片传到控制器,这时候,在控制器端,只需要验证用户名和密码和图片,也就是说,控制端获取到的是图片的对象,而验证码等都是难以获取的。如果验证的图片上再加上删除条纹等,安全系数就更高了。

下面我来做一个简单的验证码的实现。

步骤:

1、建立一个html登陆界面,我做的比较简单,代码:

<html>
  <head>
    <title>Login.html</title>
	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
	<script type="text/javascript">
		function getImg(){
			var img=document.getElementById("img");
			img.src="/servlet/ServletResponseCheckCode?date="+new Date();
		}
	</script>
  </head>
  
  <body>
   <form action="" method="post">
   	用户名:<input type="text" name="user"><br>
   	密码:<input type="password" name="pwd"><br>
   	输入验证码:<input type="text"><br/> <img alt="换一张" src="/servlet/ServletResponseCheckCode" id="img" οnclick="getImg()"><a href="javascript:void(0)" οnclick="getImg()">看不清,换一张</a>
  	<img alt="" src="/photo_02.jpg">
   </form>
  </body>
</html>


 

2、建立一个servlet,在doGet方法里面绘制图片验证码

       a.获取图片缓冲区

       b.通过图片缓冲区获取画笔

       c.绘制图片边框、背景等

        d.绘制随机数字或者文字

        e.通过图片流将图片写入到页面中

关键代码如下:

    

int width=120;
		int height=20;
		//获取图片缓存区
		BufferedImage bufferedImage=new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
		//获取画笔工具
		Graphics g=bufferedImage.getGraphics();
		//设置画笔颜色
		g.setColor(Color.red);
		//画出矩形框
		g.drawRect(0, 0, width, height);
		//绘制背景
		g.setColor(Color.green);
		g.fillRect(1, 1, width-1, height-1);
		
		//产生随机数
		Random r=new Random();
		g.setColor(Color.red);
		for(int x=0;x<4;x++){
			g.drawString(r.nextInt(10)+"",20+x*20, 16);	}
		//创建ImageIO对象
		ImageIO.write(bufferedImage, "jpg", response.getOutputStream());


 

 

大功告成,一个简单的验证码就完成了,如果在狠一点点,加上些删除线,保证你是玉皇大帝,也无法破解这个验证码。安全系数绝对高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值