依赖

<!-- 谷歌验证码 --><dependency><groupId>com.warrenstrange</groupId><artifactId>googleauth</artifactId><version>1.2.0</version></dependency>

场景:

验证身份

一般是重要的网站或平台 需要在登录的时候强校验身份, 每个用户绑定一个 安全码,这个码 会根据时间变化生成不同的验证码,只有该用户掌握了对应的安全码,绑定在 google 身份验证器app 中,可以查询到,然后与后台算法生成的进行对比,验证身份

具体代码:

package com.util;import com.warrenstrange.googleauth.GoogleAuthenticator;
import com.warrenstrange.googleauth.GoogleAuthenticatorKey;import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;/*** 增加google 动态验证码工具类* 增加googleauth-1.1.2.jar** account,会员账号, secret 安全码, issuer 服务名称,如印象笔记等,  除了安全码非空外,都可为空* Google Authenticator 约定的二维码信息格式 : otpauth://totp/{account}?secret={secret}&issuer={issuer}*/
public class GoogleAuth {public static void main(String[] args) {String key = getKeyStr();//P3IBV7BGUR3BKVCL //2TRXIQBK3SGJ5EQN
//        String key = "P3IBV7BGUR3BKVCL";//16 位由Base32 的密码组成的服务码int code = getVercode(key);boolean isPattern = isPattern(key,code);}/*** 防止生成重复安全码* @param list      已生成的安全码* @return*/public static String getRepetitionKeyStr(List<String> list) {AtomicInteger integer = new AtomicInteger(0);String code = "";while (integer.get() < 1) {code = getKeyStr();if((null == list || list.size() == 0) || !list.contains(code)) {integer.incrementAndGet();//原子自增}}return code;}/*** 获得为用户随机生成的安全码* @return*/public static String getKeyStr() {GoogleAuthenticator gAuth  = new GoogleAuthenticator();final GoogleAuthenticatorKey key = gAuth .createCredentials();String keyStr = key.getKey();
//        System.out.println(keyStr);return keyStr;}/*** 判断输入的验证码是否符合* @param key        安全码* @param password   验证码,根据时间来生成的验证码* @return*/public static boolean isPattern(String key,int password) {GoogleAuthenticator gAuth = new GoogleAuthenticator();boolean isPattern = gAuth.authorize(key,password);
//        System.out.println(isPattern);return isPattern;}/*** 获得TOTF算法生成的验证码,根据时间产生* @param secretKey   安全码* @return*/public static int getVercodeTime(String secretKey) {GoogleAuthenticator gAuth = new GoogleAuthenticator();int code = gAuth.getTotpPassword(secretKey);
//        System.out.println(code);return code;}}

动态生成google 身份验证码(口令)相关推荐

  1. 使用google身份验证器实现动态口令验证

    最近有用户反应我们现有的短信+邮件验证,不安全及短信条数限制和邮件收验证码比较慢的问题,希望我们 也能做一个类似银行动态口令的验证方式.经过对可行性的分析及慎重考虑,可以实现一个这样的功能. 怎么实现 ...

  2. Java使用google身份验证器实现动态口令验证

    google身份认证器服务端key的生成和它生成的随机密码的验证: 客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道.此外,客户端和服务器各有一个计数器C,并且 ...

  3. 动态生成能够局部刷新的验证码【AJAX技术】---看了不懂赔你钱

    在开发JavaWeb应用时,动态生成能够局部刷新的验证码是一项必须的功能,在这里我们将会详细的讲解如何实现这一功能. 一.涉及技术 该功能需要用到AJAX异步传输技术,这样能保证在点击"看不 ...

  4. 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码...

    只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这 ...

  5. 使用Google身份验证进行ssh二次验证

    什么是谷歌身份验证器 谷歌身份验证器,即Google Authenticator(Google身份验证器)v2.33 谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题. 特点 ...

  6. 两步验证杀手锏:Java 接入 Google 身份验证器实战

    转载自   两步验证杀手锏:Java 接入 Google 身份验证器实战 什么是两步验证? 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见 ...

  7. php接入Google身份验证器

    如果不清楚Google身份验证器是个什么东西的,建议先去了解一下,再回来看此篇文章,会更好理解一些. GitHub上有对Google Auth的php实现封装,这里直接拿下来用,可从以下地址自行获取G ...

  8. 导出Google身份校验器otp密钥迁移到web

    导出Google身份校验器otp密钥迁移到web 背景: 公司的堡垒机需要使用30s有效期otp动态密码做二次登录.实现某些情况下,同事可通过web,在规定的有效期内可获取otp二次授权密码 otp: ...

  9. vue预加载动态生成runtime.js_预渲染 prerender-spa-plugin 避坑指南

    预渲染原理 在webpack打包结束并生成文件后(after-emit hook),会启动一个server模拟网站的运行,用puppeteer(google官方的headless 无头浏览器浏览器)访 ...

最新文章

  1. keyshot卡住了还能保存吗_倒入醒酒器的红酒一次没喝完,还能倒回酒瓶保存吗?...
  2. 新方向!DeepMind提出人工生命框架,促进智能生物体的出现
  3. hadoop8088端口查看历史打不开,但是在虚拟机上可以打开的解决办法
  4. codeforces 401D. Roman and Numbers 数位dp
  5. 好好爱惜自己的牙齿(电动牙刷)
  6. 鸿蒙os2.0系统什么时候,鸿蒙OS 2.0beta什么时候发布 鸿蒙OS2.0功能介绍
  7. beta:scrum5
  8. 2012.2.18-silverlight设计器崩溃
  9. 网页设计如何排成一列_网页设计如何影响以及改善SEO?
  10. 【guava】GuavaCache缓存失效的时候做一些操作 RemovalListener
  11. oracle启动bat命令,ORACLE 启动 bat 脚本
  12. DEV控件之ChartControl用法
  13. HRCAD2008 无法加载问题
  14. Dynamic-load-apk插件原理解析
  15. 十年经验教你如何学习嵌入式系统
  16. python串口收发
  17. python是跨平台语言吗_python可以跨平台么
  18. 老羊摘编自《罗辑思维跨年演讲》——分享3——阿里和腾讯
  19. 微信内置浏览器中如何实现点击电话号码自动到拨号页面?
  20. 计算cosx的近似值

热门文章

  1. 学习笔记(01):小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课-闰年与平年——逻辑运算符的优先级...
  2. Android 13 第一个开发者预览版本来了,网友直呼:Android 12 还没透
  3. jqGrid合并表头
  4. 如何在PPT中插入动画、视频、音频、解说等
  5. 【超详解】NC17857 起床困难综合症
  6. Ubuntu打印服务器配置
  7. linux 软连接、硬连接创建、删除,说明
  8. linux查看服务器配置信息
  9. python opencv读取mp4文件错误(已解决)
  10. 苹果手机怎么能查看网页源代码