名称 | SecurityOrder |
---|---|
语言 | Android |
平台 | GitOSC |
作者 | 流年 |
链接 | 点此进入 |
备注 | 更多精彩开源库推荐请访问明灯小站 |
TOTP(Time-base One-Time Password)译为基于时间的一次性密码,也称时间同步的动态密码。应用范围:对安全性要求比较高的场合,可以进行密码的二次认证,例如:游戏,银行等业务。
该库的加密工具类主要参考google-authenticator 加密原理:使用HMAC算法,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。 这里的密钥参数:base32生成,消息参数:时间戳(秒单位)/时间间隔(TimeStep) (tips: 例如 TimeStep=30 30内生成密码一样,就是误差30s)
效果图
TOTP的要求
- 客户端和服务器必须能够彼此知道或者推算出对方的Unix Time;
- 客户端和服务器端必须共享一个密钥 ;
- 算法必须使用HOTP作为其关键实现环节 ;
- 客户端和服务器端必须使用相同的步长X ;
- 每一个客户端必须拥有不同的密钥 ;
- 密钥的生成必须足够随机 ;
- 密钥必须储存在防篡改的设备上,而且不能在不安全的情况下被访问或使用;
- 对该算法中T的实现必须大于int32,因为它在2038年将超出上限;
- T0和X的协商必须在之前的步骤中就已经做好了。
使用方法
- 将项目app\src\main\java\com\tk\securityorder\totp中的Base32String.java、PasscodeGenerator.java、TimeUtils.java等三个类添加自己项目;
- 调用PasscodeGenerator中的generateTotpNum方法:
String totpNum = TOTPPasscodeGenerator.generateTotpNum();
网友评论