Google Authenticator验证java服务端代码问题?(已解决)

发布于 2022-09-05 22:11:10 字数 431 浏览 14 评论 0

用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黄昏下泛黄的笔记 2022-09-12 22:11:10

验证的时候可用string类型传入,直接转long型后再比较久行了,谷歌验证器里显示的6位数字出现0开头是显示的时候自动补全的,其实计算出来的是5位的数字

<逆流佳人身旁 2022-09-12 22:11:10

TOTP 算法生成的其实是一个整型的 hash (类似哈希运算),只不过如果位数不够前面补零处理,所以将这个 6 位的字符串转为 long 验证也是可以的。另外其实生成算法就是验证算法类似:gen(key) == code

算法详见:https://tools.ietf.org/id/dra...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文