steam令牌验证码实现原理
用过steam的用户对这个问题应该比较熟悉,steam令牌相当于二次验证,当你登录陌生设备或进行交易时,需要输入令牌里的验证码进行二次验证。
我比较好奇的地方就是即使app不联网,手机令牌上的验证码也是与服务器同步的,也就是说用户断开手机的网络,输入令牌上的验证码依然可以达到二次验证的效果。
我没有接触过这方面的知识,想了解一下,望大神们可以提供一些思路。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这种令牌通常是基于TOTP实现的, 大概是这样:
截断HMAC(密钥, (当前时间戳 - 初始时间戳) / 时间步))
。只有在建令牌的时候,服务器和客户端协商好密钥、初始时间戳就可以了,后续客户端只需改变
当前时间戳
就能根据时间生成令牌。时间步设成60秒,就可以每60秒生成一个令牌。当然,Steam的令牌还有英文字母,所以肯定不是标准的TOTP实现,原理应该差不多。
应该是根据时间计算的一个序列
令牌的使用大概需要和服务器时间相差不要太多才可以,Q Q 安全手机令牌是这样的。。