Google两步验证

  1. HOTP:计数器验证
  2. TOTP:时间戳验证

算法公式

HS = HMAC-SHA-1(K,C)
DT(HS)//相当于算法分析2-5步
K:秘钥,客户端和服务端都知道,其他第三方不知道
C:在HOTP里面属于计数器
在TOTP里面属于时间戳

算法分析

  1. 通过K和C生成一个容量为20的byte数组,byte[] a;
  2. 取最后数组a的最后一位,和0xF相余,也就是取最后一位的低四位,作为偏移量
  3. 取偏移量开始的第一个整形字节
  4. 将第三部取得的整形自己与0x7FFFFFFF相&,&完就相当于取后31位
  5. 将第四部的值模除10^6,就会得到6位验证码
//第一步
byte[] hash = signer.sign(challenge);
//第二步
int offset = hash[hash.length - 1] & 0xF;//取数组最后一个字节的低四位作为偏移量
//第三步,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值