Google Authenticator验证java服务端代码问题?(已解决)
用Google Authenticator来做验证,网上能找到的能用的代码基本上都是抄来抄去同一份,比如这个博客里的代码:http://blog.csdn.net/Mr_Smile...
但是我发现这个代码有个问题,就是验证的时候返回的6位数字是long型的,但是谷歌验证器其实是会返回开头是0的6位数的,但是看了验证的方法都是用long型来存储返回值,特别是在verify_code方法里计算出的hash是用long存储的,感觉这样不可能算出不知道怎么样改造成用string来返回,long型的code根本没法存入一个0开头的6位数字,有没有人有做过这个验证功能的,怎么实现用string类型来验证code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
验证的时候可用string类型传入,直接转long型后再比较久行了,谷歌验证器里显示的6位数字出现0开头是显示的时候自动补全的,其实计算出来的是5位的数字
TOTP 算法生成的其实是一个整型的 hash (类似哈希运算),只不过如果位数不够前面补零处理,所以将这个 6 位的字符串转为 long 验证也是可以的。另外其实生成算法就是验证算法类似:
gen(key) == code