还记得早些年,网易出了一个"将军令",用于在游戏中授权,以增加整个软件服务的安全性,现在大多数已经不再使用这种硬件口令,主要因为这东西成本较高,也不利于携带,丢失就得线上补办,比较麻烦。随着Google推出谷歌身份验证器 (Google Authenticator),大大便利了"将军令"服务。

下面来说说用Java怎么提供这种服务,主要是服务端校验,客户端直接安装app就好,在应用商店直接搜索Google身份验证器就能下载。下面是Java代码例子:

public class OtpUtil {private final static Integer SECRET_LENGTH = 32;private static String generateSecret(int length) {SecureRandom random = new SecureRandom();byte[] salt = new byte[length / 2];random.nextBytes(salt);return Base32.encode(salt);}public static String generateSecret64() {return generateSecret(64);}/**** @return*/public static String generateSecret() {return generateSecret(SECRET_LENGTH);}/*** 取当前的otp Code* @param secret* @return*/public static String generateOtpCode(String secret) {return new Totp(secret).now();}/*** 校验** @param secret* @param otp* @return*/public static boolean verify(String secret, String otp) {return new Totp(secret).verify(otp);}/**** @param domain* @param user* @param secret* @return*/public static String generateQrCode(String domain, String user, String secret) {return "otpauth://totp/" + domain + "(" + user + ")?secret=" + secret;}

java提供OTP服务相关推荐

  1. java提供ftp服务,搭建ftp服务

    使用Java代码搭建FTP服务器,步骤如下: 1.添加依赖 带版本管理的依赖添加看文章最下边 <dependency><groupId>org.apache.ftpserver ...

  2. 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口 6...

    在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...

  3. 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口

    在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...

  4. java什么是服务治理平台_Java | Spring Cloud 是如何实现服务治理的

    Spring Cloud 是如何实现服务治理的 Table of Contents 建议提前阅读 Spring Cloud Commons 之服务治理浅析 Spring 在设计的时候,通常会考虑方便扩 ...

  5. go vs python 对接外部web api_python--web--让python提供api服务--aiohttp-Go语言中文社区

    aiohttp介绍 官网上有这样一句话介绍:Async HTTP client/server for asyncio and Python 翻译过来就是 基于asyncio和Python实现的异步HT ...

  6. 6月20日云栖精选夜读丨国内首家!阿里云宣布全面提供IPv6服务

    IPv6作为下一代互联网的技术基础,对物联网.车联网.人工智能等新兴产业的发展有着重大影响.6月20日,中国云计算的领头羊阿里云宣布联合三大运营商全面对外提供IPv6服务,希望能在2025年前帮助中国 ...

  7. 【Elasticsearch】 Elasticsearch对外提供分词服务实践

    1.概述 转载:总结 | Elasticsearch对外提供分词服务实践 2. 问题抛出? 实战开发应用场景中,有获取一段话.一篇文章词频的业务场景, 词频的前提就是分词. 常用的中文分词包括: IK ...

  8. java 微服务源码_Redkale 1.9.4 Java 分布式微服务框架

    Redkale 1.9.4 发布.Redkale (中文名: 红菜苔,一种湖北特产蔬菜)是基于Java 8全新的微服务框架, 包含HTTP.WebSocket.TCP/UDP.数据序列化.数据缓存.依 ...

  9. java对接webservice服务实现推送

    [背景] 前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上 ...

最新文章

  1. Guava 源码分析(Cache 原理)
  2. mdi 子窗体 菜单 不合并。
  3. boost::multi_array模块实现创建负步幅视图的小测试
  4. CentOS 快速安装pip
  5. Kubernetes 入门(4)集群配置
  6. java删除集合元素吗_java如何删除集合中的元素
  7. 我家云刷android系统教程,我家云刷机教程——小白详细版(篇二)
  8. Windows下的Crontab表达式解析DLL的使用
  9. Perl 数字与字符串运算符之区别
  10. spyder ctrl + 鼠标左键点击函数 无法跳转
  11. php爬虫大数据抓取_数据分析|爬虫抓取东方财富网股吧帖子
  12. cas单点登录的时序图
  13. win10下itunes安装失败的解决方法
  14. 【】每日360题,2019.11.05日19点财会类考试习题答案
  15. seo之html优化,SEO优化技巧之HTML优化
  16. 项目上线质量如何评估
  17. 获取当前日期是今年的第几周
  18. Android 通用流行框架梳理
  19. 常见EI会议出版商IOP出版计划供参考
  20. 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗?畅言普通话准确度介绍...

热门文章

  1. **python入门实战**-已知圆的半径求周长面积
  2. Xmind免费资源共享
  3. 访问外部设备寄存器的方法
  4. Foxmail 近期突然无法接收邮件
  5. 基于国产IPSec 盒子的物联网密改方案
  6. L11-Python中的高阶函数的使用
  7. C语言开发 天天酷跑 用到的 graphics.h
  8. Flink—窗口、时间和水印
  9. python建模培训
  10. c++简单的停车场管理计费系统