我见过很多两因素身份验证应用程序,例如谷歌身份验证应用程序。
该应用程序离线工作,每 30 秒重置一次手机上的密钥。
那么服务器如何知道哪些密钥是有效的呢?
我很难理解这个?
如果我要自己创建这样的应用程序。我该怎么做?
我见过很多两因素身份验证应用程序,例如谷歌身份验证应用程序。
该应用程序离线工作,每 30 秒重置一次手机上的密钥。
那么服务器如何知道哪些密钥是有效的呢?
我很难理解这个?
如果我要自己创建这样的应用程序。我该怎么做?
Google Authenticator 使用基于时间的一次性密码算法。它使用当前时间和共享密钥来计算代码。只要设备和服务器的时间设置正确,生成的代码就会生效。
Google Authenticator 使用 2 种不同的方法:
“基于时间”的版本 (TOTP) 很容易保持同步。(您的设备......和远程服务器......必须具有相同/正确的时间。)
“基于计数器”的版本 (HOTP) 保持同步(即使您的移动设备处于飞行模式),并且以某种方式每 30 秒更新一次其内部计数器……远程服务器也是如此。
我只与#1 合作过......因为谷歌不是很清楚#2 计数器如何在移动设备和远程服务器之间没有任何通信的情况下保持“同步”(每 30 秒变化一次)。