java提供OTP服务
还记得早些年,网易出了一个"将军令",用于在游戏中授权,以增加整个软件服务的安全性,现在大多数已经不再使用这种硬件口令,主要因为这东西成本较高,也不利于携带,丢失就得线上补办,比较麻烦。随着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服务相关推荐
- java提供ftp服务,搭建ftp服务
使用Java代码搭建FTP服务器,步骤如下: 1.添加依赖 带版本管理的依赖添加看文章最下边 <dependency><groupId>org.apache.ftpserver ...
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口 6...
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...
- java什么是服务治理平台_Java | Spring Cloud 是如何实现服务治理的
Spring Cloud 是如何实现服务治理的 Table of Contents 建议提前阅读 Spring Cloud Commons 之服务治理浅析 Spring 在设计的时候,通常会考虑方便扩 ...
- go vs python 对接外部web api_python--web--让python提供api服务--aiohttp-Go语言中文社区
aiohttp介绍 官网上有这样一句话介绍:Async HTTP client/server for asyncio and Python 翻译过来就是 基于asyncio和Python实现的异步HT ...
- 6月20日云栖精选夜读丨国内首家!阿里云宣布全面提供IPv6服务
IPv6作为下一代互联网的技术基础,对物联网.车联网.人工智能等新兴产业的发展有着重大影响.6月20日,中国云计算的领头羊阿里云宣布联合三大运营商全面对外提供IPv6服务,希望能在2025年前帮助中国 ...
- 【Elasticsearch】 Elasticsearch对外提供分词服务实践
1.概述 转载:总结 | Elasticsearch对外提供分词服务实践 2. 问题抛出? 实战开发应用场景中,有获取一段话.一篇文章词频的业务场景, 词频的前提就是分词. 常用的中文分词包括: IK ...
- java 微服务源码_Redkale 1.9.4 Java 分布式微服务框架
Redkale 1.9.4 发布.Redkale (中文名: 红菜苔,一种湖北特产蔬菜)是基于Java 8全新的微服务框架, 包含HTTP.WebSocket.TCP/UDP.数据序列化.数据缓存.依 ...
- java对接webservice服务实现推送
[背景] 前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上 ...
最新文章
- Guava 源码分析(Cache 原理)
- mdi 子窗体 菜单 不合并。
- boost::multi_array模块实现创建负步幅视图的小测试
- CentOS 快速安装pip
- Kubernetes 入门(4)集群配置
- java删除集合元素吗_java如何删除集合中的元素
- 我家云刷android系统教程,我家云刷机教程——小白详细版(篇二)
- Windows下的Crontab表达式解析DLL的使用
- Perl 数字与字符串运算符之区别
- spyder ctrl + 鼠标左键点击函数 无法跳转
- php爬虫大数据抓取_数据分析|爬虫抓取东方财富网股吧帖子
- cas单点登录的时序图
- win10下itunes安装失败的解决方法
- 【】每日360题,2019.11.05日19点财会类考试习题答案
- seo之html优化,SEO优化技巧之HTML优化
- 项目上线质量如何评估
- 获取当前日期是今年的第几周
- Android 通用流行框架梳理
- 常见EI会议出版商IOP出版计划供参考
- 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗?畅言普通话准确度介绍...