如何用android开发otp

如何用android开发otp,第1张

otp从技术来分有三种形式, 时间同步、事件同步、挑战/应答。

(1) 时间同步

原理是基于 动态令牌和 动态口令验证服务器的时间比对,基于 时间同步的 令牌,一般每60秒产生一个新口令,要求服务器能够十分精确的保持正确的时钟,同时对其令牌的晶振频率有严格的要求,这种技术对应的终端是硬件令牌。

(2)事件同步

基于事件同步的令牌,其原理是通过某一特定的事件次序及相同的种子值作为输入,通过HASH算法中运算出一致的密码。

(3)挑战/应答

常用于的网上业务,在网站/应答上输入 服务端下发的 挑战码, 动态令牌输入该挑战码,通过内置的算法上生成一个6/8位的随机数字,口令一次有效,这种技术目前应用最为普遍,包括刮刮卡、短信密码、动态令牌也有挑战/应答形式。

主流的动态令牌技术是时间同步和挑战/应答两种形式。

项目采用:

https://code.google.com/p/androidtoken/ 实现TOTP动态口令登录

android token 该项目支持HOTP (事件令牌)和TOTP (时间令牌)规范

配置令牌支持:KeyUriFormat和QR码,以及手动创建

项目实现:

我这里采用添加方便的qr码,也就是常见的二维码来实现用户通过手机来绑定一个token

首先,需要有的就是服务器端和客户端都共有的一个seed。

private final static String NUM_CHAR = "0123456789"

private static int charLen = NUM_CHAR.length()

/**

* 根据系统时间获得指定位数的随机数

* @param randomNumberDigit 随机数的位数

* @return 获得的随机数

*/

public static String getRandomNumber(int randomNumberDigit) {

long seed = System.currentTimeMillis()// 获得系统时间,作为生成随机数的种子

StringBuffer sb = new StringBuffer()// 装载生成的随机数

Random random = new Random(seed)// 调用种子生成随机数

for (int i = 0i <randomNumberDigiti++) {

sb.append(NUM_CHAR.charAt(random.nextInt(charLen)))

}

return sb.toString()

}

otp验证码是一种临时性的登录凭证,可以用于安全地登录网站或服务。一般情况下,otp验证码可以通过发送短信到指定的手机号码或邮箱地址,或者通过使用第三方应用,如Google Authenticator或Authy获取。此外,某些服务还可以在短信息或电子邮件中提供一次性的口令,以便用户可以轻松访问其帐户。

1、去除无用的数据头或数据尾字符,一般这些无用数据(说明性的文字)行数不会太多,手工删除简单。

2、用文本编辑器自带的"替换"功能将数据分隔符(如"逗号"、“分号”、“点号”等)换成"空格"。txt文本一行中的数据用“空格”隔开后代表不同列数据。

3、打开Origin,新建Workbook,导入的时候用import里面的single ASCII。

4、如果导入之后发现行列颠倒了,就再transpose一下就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11926525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存