安卓端TOTP动态密码生成库

名称 SecurityOrder
语言 Android
平台 GitOSC
作者 流年
链接 点此进入
备注 更多精彩开源库推荐请访问明灯小站

TOTP(Time-base One-Time Password)译为基于时间的一次性密码,也称时间同步的动态密码。应用范围:对安全性要求比较高的场合,可以进行密码的二次认证,例如:游戏,银行等业务。
该库的加密工具类主要参考google-authenticator 加密原理:使用HMAC算法,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。 这里的密钥参数:base32生成,消息参数:时间戳(秒单位)/时间间隔(TimeStep) (tips: 例如 TimeStep=30 30内生成密码一样,就是误差30s)
效果图

TOTP效果图

TOTP的要求

  1. 客户端和服务器必须能够彼此知道或者推算出对方的Unix Time;
  2. 客户端和服务器端必须共享一个密钥 ;
  3. 算法必须使用HOTP作为其关键实现环节 ;
  4. 客户端和服务器端必须使用相同的步长X ;
  5. 每一个客户端必须拥有不同的密钥 ;
  6. 密钥的生成必须足够随机 ;
  7. 密钥必须储存在防篡改的设备上,而且不能在不安全的情况下被访问或使用;
  8. 对该算法中T的实现必须大于int32,因为它在2038年将超出上限;
  9. T0和X的协商必须在之前的步骤中就已经做好了。

使用方法

  1. 将项目app\src\main\java\com\tk\securityorder\totp中的Base32String.java、PasscodeGenerator.java、TimeUtils.java等三个类添加自己项目;
  2. 调用PasscodeGenerator中的generateTotpNum方法:
String totpNum = TOTPPasscodeGenerator.generateTotpNum();

你可能感兴趣的:(安卓端TOTP动态密码生成库)