闲来无事写了几个Demo,方便自己以后要用的话直接引用过来就可以了,到现在为止还没用上,不过在用户登录、用户注册上强制添加这个可以有效防护账户,同时也可以避免恶意注册,但是貌似这个服务国内不好使,先不考虑这个问题。

Google Authenticator的原理就是一个算法。TOTP的密钥先通过过滤转换为Base32编码后的Secret,然后根据UNIX Time来计算有效期,再用HMAC-SHA1把动态口令进行封装,最后把这个HMAC-SHA1的结果给简化成6位数字形成动态口令。

在用户的角度,首先服务器提供了一个30秒的TOTP,根据otpauth生成一个含有密钥的二维码,用户将密钥添加进Google Authenticator的APP之后,Google Authenticator的APP会根据密钥来计算动态口令,同时服务端也通过用户名来对应相应的密钥,然后根据这个密钥生成一个同样的动态口令,再和用户输入的动态口令比对。

以上内容如果在手机端显示不完全,请直接到GitHub页查看。