精华内容
下载资源
问答
  • 动态验证码工具

    2018-12-10 08:45:59
    这是一个写验证码的小工具类,非常好用,我一直在用这个
  • 在我们登录一些网站、应用、游戏时,见到动态验证码的频率越来越多了。最常见的应该就是Google Authenticator,暴雪安全令之类的应用,通过不断变换的动态数字来最大限度的保证账号的数据安全。 今天 Gitee ...

    在我们登录一些网站、应用、游戏时,见到动态验证码的频率越来越多了。最常见的应该就是Google Authenticator,暴雪安全令之类的应用,通过不断变换的动态数字来最大限度的保证账号的数据安全。

    今天 Gitee 推荐的这款开源项目,是依托于微信小程序的动态验证码应用,它的表现如何呢,一起来看看吧。

     

    项目名称:OTP

    项目作者:当当

    开源许可协议:MIT

    项目地址:https://gitee.com/ghostmemory/otp

     

    项目简介

    基于时间戳算法(TOTP)的动态验证码微信小程序,兼容 Google Authenticator 二步验证。

     

    软件架构

    基于MinaOTP二次开发,使用小程序云开发实现云端数据备份。

     

    软件功能

    • 生成TOTP动态验证码口令
    • 支持扫码或手动录入数据
    • 支持编辑服务和帐号信息
    • 支持手动删除已存在记录
    • 支持云端备份与恢复数据
    • 支持倒计时红色闪烁提醒

     

    项目截图

     

    部署流程

    1. 下载本项目或者git clone https://gitee.com/ghostmemory/otp.git
    2. 将项目导入微信小程序开发工具
    3. 修改/project.config.json 中的 appid: '你申请的小程序appid'

    4.创建云数据库otp、user、loginlog

    5.上传云函数user

    如果你想了解有关这个项目的代码细节,那就点击后面的链接前往项目主页看看吧:https://gitee.com/ghostmemory/otp

    展开全文
  • 生成动态验证码,可 防本地自动识别验证码。只能人工打码(反正截图识别是不可能的) ,因为验证码肉眼看是6位数,无论怎么截图都只截到5位数,所以无法用软件识别,只是个思路,仅供参考
  • 12306网站推出“彩色动态验证码机制”,新版验证码不但经常出现字符叠压,还不停抖动,不少人大呼“看不清”,称“那个验证码,是毕加索的抽象画么!”铁总客服则表示:为了能正常购票只能这样。而多家抢票软件接近...
  • 通过OpenCV实现的全自动图形图片验证码识别软件,可以识别出绝大多数验证码,操作简单方便。
  • 动态验证码

    2013-11-03 16:24:21
    java动态验证码 用学习代码,小型软件,件仅供参考。
  • 可供多种可调用动态链接库的编程语言调用(vc、vb、delphi、 java、c#、vb.net、asp、模拟精 灵等),调用简单、灵活,可以通过传递文件名或图片数据流两种方式进行识别,提供函数调用说明及各种语言的调用具体实例。...
  • 1.用jsp编写获取验证码的代码,存入session,命名validate.jsp。 <%@ page import="java.awt.image.BufferedImage" %> <%@ page import="java.awt.*" %> <%@ page import="java.util.Random" %> &...

    1.用jsp编写获取验证码的代码,存入session,命名validate.jsp。

    <%@ page import="java.awt.image.BufferedImage" %>
    <%@ page import="java.awt.*" %>
    <%@ page import="java.util.Random" %>
    <%@ page import="javax.imageio.ImageIO" %>
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>code</title>
    </head>
    <body>
    <%
        response.setHeader("Cache-Control", "no-cache");
        //在内存中创建图像
        int width = 60, height = 20;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //获取画笔
        Graphics g = image.getGraphics();
        //设定定背景颜色
        g.setColor(new Color(200, 200, 200));
        g.fillRect(0, 0, width, height);
        //随机获取验证码
        Random rnd = new Random();
        int randNum = rnd.nextInt(8999) + 1000;
        String randStr = String.valueOf(randNum);
        //将验证码放入session中
        session.setAttribute("randStr", randStr);
        //将验证码显示到图像中
        g.setColor(Color.black);
        g.setFont(new Font("", Font.PLAIN, 20));
        g.drawString(randStr, 10, 17);
        //产生干扰点
        for (int i = 0; i < 100; i++) {
            int x = rnd.nextInt(width);
            int y = rnd.nextInt(height);
            g.drawOval(x, y, 1, 1);
        }
        //输出图像到界面
        ImageIO.write(image, "JPEG", response.getOutputStream());
        out.clear();
        out = pageContext.pushBody();
    %>
    </body>
    </html>
    
    

    2.在登录界面调用,实现对验证码的获取
    在这里插入图片描述
    下面附上登录界面的代码还有css+js代码
    登录界面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>教师登录界面</title>
    
    <link rel="stylesheet" href="css/style.css">
    <script type="text/javascript">
       function checklogin(){
    	   var tname=document.getElementById("tname").value;
    	   var tpassword=document.getElementById("tpassword").value;
    	   var code=document.getElementById("code").value;
    	   if(tname==""){
    		   document.getElementById("spantname").innerHTML="账户不能为空";
    	   }else if(tpassword==""){
    		   document.getElementById("spantpassword").innerHTML="密码不能为空";
    	   }else if(code==""){
    		   document.getElementById("spancode").innerHTML="验证码不能为空";
    	   }else{
    		   document.form1.submit();	
    	   }
    					
    }
       function checksignin(){	   
    		document.form2.submit();			
    }
       function refresh() {
           document.getElementById("image").src="validate.jsp?id="+Math.random();
       }
    </script>
    </head>
    <body>
    <div class="content">
        	<form action="TeacherLoginServlet" method="post" name="form1">
            <div class="form sign-in">
                <h2>欢迎回来</h2>
                <label>
                    <span>账号</span>
                    <input type="test" name="tname" id="tname"/>
                    <span id="spantname" style="color:red"></span>
                </label>
                <label>
                    <span>密码</span>
                    <input type="password" id="tpassword" name="tpassword"  />
                    <span id="spantpassword" style="color:red"></span>
                </label>
               
                 <label>
                    <span>验证码</span>
                    <input type="text" name="code" id="code" />
                     <img src="validate.jsp" id="image" οnclick="refresh()" />
                      <span id="spancode" style="color:red"></span>
                </label>
                 <p class="forgot-pass"><a href="javascript:">忘记密码?</a></p>
                <button type="button" class="submit" onclick="checklogin()">登 录</button>
            </div>
        	</form>
            <div class="sub-cont">
                <div class="img">
                    <div class="img__text m--up">
                        <h2>还未注册?</h2>
                        <p>立即注册,加入学生管理!</p>
                    </div>
                    <div class="img__text m--in">
                        <h2>已有帐号?</h2>
                        <p>有帐号就登录吧,好久不见了!</p>
                    </div>
                    <div class="img__btn">
                        <span class="m--up">注 册</span>
                        <span class="m--in">登 录</span>
                    </div>
                </div>
                <form action="SignServlet" method="post" name="form2">
                <div class="form sign-up">
                    <h2>立即注册</h2>
                    <label>
                        <span>用户名</span>
                        <input type="text" name="tname"/>
                    </label>
                    <label>
                        <span>电话</span>
                        <input type="text" name="tphone"/>
                    </label>
                    <label>
                        <span>密码</span>
                        <input type="password" name="tpassword"/>
                    </label>
                    <button type="button" class="submit" onclick="checksignin()">注 册</button>
                   
                </div>
            	</form>
            </div>
        </div>
    
        <script src="js/script.js"></script>
    	
    	
    </body>
    </html>
    

    css样式:

    
     *, *:before, *:after {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
    }
    
    body {
        font-family: 'Open Sans', Helvetica, Arial, sans-serif;
        background: #ededed;
    }
    
    input, button {
        border: none;
        outline: none;
        background: none;
        font-family: 'Open Sans', Helvetica, Arial, sans-serif;
    }
    
    .tip {
        font-size: 20px;
        margin: 40px auto 50px;
        text-align: center;
    }
    
    .content {
        overflow: hidden;
        position: absolute;
        left: 50%;
        top: 50%;
        width: 900px;
        height: 550px;
        margin: -300px 0 0 -450px;
        background: #fff;
    }
    
    .form {
        position: relative;
        width: 640px;
        height: 100%;
        transition: -webkit-transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
        padding: 50px 30px 0;
    }
    
    .sub-cont {
        overflow: hidden;
        position: absolute;
        left: 640px;
        top: 0;
        width: 900px;
        height: 100%;
        padding-left: 260px;
        background: #fff;
        transition: -webkit-transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
    }
    
    .content.s--signup .sub-cont {
        -webkit-transform: translate3d(-640px, 0, 0);
        transform: translate3d(-640px, 0, 0);
    }
    
    button {
        display: block;
        margin: 0 auto;
        width: 260px;
        height: 36px;
        border-radius: 30px;
        color: #fff;
        font-size: 15px;
        cursor: pointer;
    }
    
    .img {
        overflow: hidden;
        z-index: 2;
        position: absolute;
        left: 0;
        top: 0;
        width: 260px;
        height: 100%;
        padding-top: 360px;
    }
    
    .img:before {
        content: '';
        position: absolute;
        right: 0;
        top: 0;
        width: 900px;
        height: 100%;
        background-image: url(../images/bg.jpg);
        background-size: cover;
        transition: -webkit-transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
    }
    
    .img:after {
        content: '';
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.6);
    }
    
    .content.s--signup .img:before {
        -webkit-transform: translate3d(640px, 0, 0);
        transform: translate3d(640px, 0, 0);
    }
    
    .img__text {
        z-index: 2;
        position: absolute;
        left: 0;
        top: 50px;
        width: 100%;
        padding: 0 20px;
        text-align: center;
        color: #fff;
        transition: -webkit-transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out;
        transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
    }
    
    .img__text h2 {
        margin-bottom: 10px;
        font-weight: normal;
    }
    
    .img__text p {
        font-size: 14px;
        line-height: 1.5;
    }
    
    .content.s--signup .img__text.m--up {
        -webkit-transform: translateX(520px);
        transform: translateX(520px);
    }
    .img__text.m--in {
        -webkit-transform: translateX(-520px);
        transform: translateX(-520px);
    }
    
    .content.s--signup .img__text.m--in {
        -webkit-transform: translateX(0);
        transform: translateX(0);
    }
    
    .img__btn {
        overflow: hidden;
        z-index: 2;
        position: relative;
        width: 100px;
        height: 36px;
        margin: 0 auto;
        background: transparent;
        color: #fff;
        text-transform: uppercase;
        font-size: 15px;
        cursor: pointer;
    }
    .img__btn:after {
        content: '';
        z-index: 2;
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        border: 2px solid #fff;
        border-radius: 30px;
    }
    
    .img__btn span {
        position: absolute;
        left: 0;
        top: 0;
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        transition: -webkit-transform 0.6s;
        transition: transform 0.6s;
        transition: transform 0.6s, -webkit-transform 0.6s;
    }
    
    .img__btn span.m--in {
        -webkit-transform: translateY(-72px);
        transform: translateY(-72px);
    }
    
    .content.s--signup .img__btn span.m--in {
        -webkit-transform: translateY(0);
        transform: translateY(0);
    }
    
    .content.s--signup .img__btn span.m--up {
        -webkit-transform: translateY(72px);
        transform: translateY(72px);
    }
    
    h2 {
        width: 100%;
        font-size: 26px;
        text-align: center;
    }
    
    label {
        display: block;
        width: 260px;
        margin: 25px auto 0;
        text-align: center;
    }
    
    label span {
        font-size: 12px;
        color: #909399;
        text-transform: uppercase;
    }
    
    input {
        display: block;
        width: 100%;
        margin-top: 5px;
        padding-bottom: 5px;
        font-size: 16px;
        border-bottom: 1px solid rgba(0, 0, 0, 0.4);
        text-align: center;
    }
    
    .forgot-pass {
        margin-top: 15px;
        text-align: center;
        font-size: 12px;
        color: #cfcfcf;
    }
    
    .forgot-pass a {
        color: #cfcfcf;
    }
    
    .submit {
        margin-top: 40px;
        margin-bottom: 20px;
        background: #d4af7a;
        text-transform: uppercase;
    }
    
    .fb-btn {
        border: 2px solid #d3dae9;
        color: #8fa1c7;
    }
    .fb-btn span {
        font-weight: bold;
        color: #455a81;
    }
    
    .sign-in {
        transition-timing-function: ease-out;
    }
    .content.s--signup .sign-in {
        transition-timing-function: ease-in-out;
        transition-duration: 0.6s;
        -webkit-transform: translate3d(640px, 0, 0);
        transform: translate3d(640px, 0, 0);
    }
    
    .sign-up {
        -webkit-transform: translate3d(-900px, 0, 0);
        transform: translate3d(-900px, 0, 0);
    }
    .content.s--signup .sign-up {
        -webkit-transform: translate3d(0, 0, 0);
        transform: translate3d(0, 0, 0);
    }
    #yzdiv{
    		text-align: center;
    	}
    
    

    js的代码:

    document.querySelector('.img__btn').addEventListener('click', function() {
        document.querySelector('.content').classList.toggle('s--signup')
    })
    
    展开全文
  • public static String generateRandomNum() { Random random = new Random(); String result=""; for (int i=0;i&lt;6;i++) { result+=random.nextInt(10); } return result;... 
    public static String generateRandomNum()
    {
      Random random = new Random();
      String result="";
      for (int i=0;i<6;i++)
      {
    	  result+=random.nextInt(10);
      }
      return result;
    }

     

    展开全文
  • 如何用代码实现手机接收动态验证码 我们现在注册一个app应用经常会使用手机验证码,那Java程序怎么实现的呢?首先我们要明白,手机接收验证码是基于三大运营商的服务实现的,而阿里云服务为我们实现了免去和运营商直接...

    如何用代码实现手机接收动态验证码

    我们现在注册一个app应用经常会使用手机验证码,那Java程序怎么实现的呢?首先我们要明白,手机接收验证码是基于三大运营商的服务实现的,而阿里云服务为我们实现了免去和运营商直接合作的麻烦以及费用等各种限制.在这里我们可以注册一个阿里云账号img登录后,点击短信服务,也可以直接搜索img点击国内消息img在这里点击签名管理,添加签名 这里的签名,就是接收短信时所显示的发件应用的名称,:n内容xxx [10086]**

    img然后点击模版管理,添加模块,记住这里的模版CODE

    imgimg

    img记录好这俩个秘钥

    img点击openAPIEXplorer

    imgimg点击发起调用,右侧出现OK表示成功.

    img点击示例代码:选择你用什么语言编程,这里我选择的是Java.然后复制main方法下的所有代码!!!打开自己的编程软件eclipse,创建包,创建类在方法下ctrl+v粘贴代码img这里我们可以再创建个类,传入对应的参数,指定接收的手机号码img在这里就算完成了,点击run as 让程序跑起来,等着就收短信验证码吧

    起来,等着就收短信验证码吧

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYvq8Z9l-1596684498840)(http://qqpublic.qpic.cn/qq_public/0/0-2195053284-E0850883EE006561B53361FA07FF2DBD/0?fmt=jpg&size=40&h=556&w=900&ppv=1)]喜欢的朋友马上动起手来吧!!

    展开全文
  • 动态验证码生成实例

    千次阅读 2013-11-26 22:59:29
    为了防止某些用户使用软件进行登录和发布信息,一般网站都采用随机的图片类型的验证码进行动态验证。下面实现一个简单的动态验证 1. 图片验证码生成Servlet,RandomCodeServlet.java package test; import java....
  • ssh动态验证码登录机器Google Authenticator是一个动态验证码程序,兼容各种智能手机平板设备,可以用来做各种帐号的二次验证,增加帐号的安全性。SSH是Linux系统的最重要防线之一,为了防止密码泄露或者被爆破,...
  • Google Authenticator配置SSH登录动态验证码 需求说明: 1、一般ssh登录服务器,只需要输入账号和密码。 2、本教程的目的:在账号和密码之间再增加一个验证码,只有输入正确的验证码之,再输入密码才能登录。这样...
  • Java随机生成动态验证码程序

    热门讨论 2009-05-13 15:40:20
    为了防止某些用户使用软件进行登录和发布信息,很多网站在用户登录或者发布信息时,都要求用户输入验证码验证码通常是以一幅图片的形式显示的,用户按照图片中显示的数字或者字母依次输入,服务端将对用户输入和...
  • 最好的验证码识别软件api接口

    万次阅读 2016-11-30 17:20:02
    最好的验证码识别软件api接口 验证码识别平台最新功能介绍:   1、识别程序以dll的方式提供使用,通过简单的函数调用即可识别复杂的验证码图片。   2、自动识别; 智能处理各种背景、边框、干扰等;   3、...
  • 在我们登录一些网站、应用、游戏时,见到动态验证码的频率越来越多了。最常见的应该就是Google Authenticator,暴雪安全令之类的应用,通过不断变换的动态数字来最大限度的保证账号的数据安全。今天 Gitee 推荐的这...
  • print('balance: %s' %balance)#开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果 cid, result =yundama.decode(filename, codetype, timeout);print('cid: %s, result: %s' % (cid, result))
  • 自己因项目需要短信验证码,特此写了一个短信验证码软件进行复习下,有什么问题欢迎评论,新手小白,不喜勿喷!
  • 本次的任务内容是使用Java模拟两步验证码动态令牌)的实现原理,在模拟的过程中明白了两步验证码的原理,在此进行记录。 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是两步验证码? 二、使用步骤 1...
  • 在我们登录一些网站、应用、游戏时,见到动态验证码的频率越来越多了。最常见的应该就是Google Authenticator,暴雪安全令之类的应用,通过不断变换的动态数字来最大限度的保证账号的数据安全。今天 Gitee 推荐的这...
  • 我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解,现公开我常用的验证码的源代码,生成效果如图: 。 使用方法: 1、在Web项目中添加一个类,如“CreateImage.cs”,然后将我公布...
  • .NET中生成动态验证码

    2019-07-13 07:15:00
    NET中生成动态验证码验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲、旋转、修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,...
  • 12306网站推出“彩色动态验证码机制”,新版验证码不但经常出现字符叠压,还不停抖动,不少人大呼“看不清”,称“那个验证码,是毕加索的抽象画么!”铁总客服则表示:为了能正常购票只能这样。而多家抢票软件接近...
  • // 可以控制动态改变的按钮提示信息 2.写一个获取短信验证码的方法绑定到页面的获取短信验证码按钮上: getCode(event) { this.validateForm1.controls['phone'].markAsDirty(); // 点击获取验证码要以输入了手机...
  • 软件名称:CV万能验证码识别填写软件 最新版本:2021 文件大小:35.5 MB (37,247,235 字节) 软件性质:简体中文/国产软件/免费软件 软件分类:图像处理 授权形式:免费软件 插件捆绑:无 使用平台:Winxp/vista/win7...
  • 前后台交互 数据库 验证码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,681
精华内容 4,672
关键字:

动态验证码软件