google的两步密码验证出来已经相当一段时间了,相信很多同学都用过,其工作原理是:
两步验证为您的 Google 帐户多加了一道安全防线
除了用户名和密码外,您还需要输入登录时 Google 通过短信或语音留言向您发送的验证码。
实际上这个东西就是类似网银口令卡的东西,但是这个实现起来更为简单,你在google账户开启了两步密码验证以后,你先得正确输入了密码,再拿出手机,查出当前的第二步密码,正确输入后才能访问你的账户,这个密码每30秒就过期并且会生成一个新密码,对了,这个东西叫做google authenticator,google是把他开源出来了的,并且有了IOS客户端,Android客户端,Blackberry客户端,甚至有Nokia客户端(这个非官方出品),有算法用啥语言来实现,实际上已经不重要了!因此,用PHP来实现google authenticator算法根本不是问题,请看老外的代码 。
对!我们有了这些资源,就可以实现自己的两步密码验证了,实际上这个算法是一个叫做HOTP的东西,算法的核心根据密钥和时间戳或者计数器来算出一个一次性密码,像google authenticator是30秒一换(基于计数器的当然就是一次换一个啦),密钥只有google authenticator和服务器知道,暴露出来的仅仅是一个每30秒(或每次)换一次的token,也就是一次性密码。
截图是通过二维码扫描进手机的,生成二维码直接用的google charts里的qr code生成工具,这个很好用的啦!个人觉着比直接PHP gd去画来的方便啊。
这里附上一个小小的基于时间的demo,点进去玩玩(我发现时间过期很不准确,待日后再改)。
怎么样?有了google authenticator,有了现成的ios应用,android应用,你只要实现服务端,其他的都是现成的!
哈哈,充满geek激情的你,还不快动手把博客登录加上这个很酷的功能?