首页 » 谷歌 » 基于时间与哈希的一次性器开启两步验证(组图)

基于时间与哈希的一次性器开启两步验证(组图)

 

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我QQ交流。
QQ号:2802364971

两步验证

您应该熟悉两步验证,对吧?例如,苹果有自己的两步验证政策,防止用户的账户密码被盗和锁定手机进行勒索。这种例子并不少见,所以苹果建议大家开启两步验证。

一般也用于登录的两步验证,和苹果的两步验证是一样的。只是的应用比较广泛,比如两步验证都是基于的。

简介

验证器是一种基于时间和哈希的一次性密码算法的两步验证软件令牌。用户需要下载绑定到网站的手机APP()。当网站验证了用户名和密码后,就会验证APP上生成的6位验证码。验证通过则登录成功,否则登录失败。

使用

让我们看一下使用 启用两步验证的应用。

如图,默认不开启两步验证,点击设置按钮进行设置。

5876b7d953fc165f3a78ba7ccd21b2f5.png

有两种基于APP(谷歌验证器)和短信验证码的两步验证方式。我们选择第一个 。

18a7a8cc92183fcf52952572205747f7.png

进入第一个验证模式,然后在APP验证器不工作时显示一堆恢复码以备不时之需。保存它们并单击下一步。

9c10e93060c0dde8fc36c8bd485916ea.png

这是认证器的密钥,下载APP,然后扫描二维码进行绑定。

安装win81无法验证产品密钥_win10 安装程序无法验证产品密钥_谷歌验证器找回密钥

5950a57d702c05e04afef422bb1461ba.png

绑定后APP模块下方会显示一个6位数的验证码,在上面的框中输入即可。

如下图所示,已成功启用两步验证。

接下来,我们注销并再次登录。该页面将提示您输入验证器验证码。如果APP不能正常使用,可以通过底部之前保存的恢复码登录。

9c2a0f7bf56c560463a76c66f0bd5032.png

好了,就是这样使用,它是如何工作的,它的原理是什么?如何访问我们的网站和APP,我们将一一揭开谜底。

工作流程

其实使用的是TOTP算法(Time-Based One-Time,即基于时间的一次性密码),其核心内容包括以下三点。

1、安全密钥

是客户端和服务端约定的安全密钥,也是绑定手机APP认证器(手机端通过扫描或手动输入安全密钥进行绑定)和验证唯一需要的密钥的验证码。安全密钥,由加密算法生成并最终编码。

2、验证时间

选择30秒作为时间片谷歌验证器找回密钥,T的值是自Unix纪元(1970年1月1日00:00:0)以来经过的30秒数,所以我们可以看到在验证码每30秒刷新一次。

谷歌验证器找回密钥_win10 安装程序无法验证产品密钥_安装win81无法验证产品密钥

更详细的原理参考:

3、签名算法

采用HMAC-SHA1算法,全称:Hash-based code(哈希运算消息认证码),以一个key和一个消息为输入,生成一个消息摘要作为输出。这里使用 SHA1 算法。作为消息输入。

使用HMAC算法是因为只有用户自己知道正确的输入key,所以会得到唯一的输出。该算法可以简单地表示为:

hmac = SHA1(+ SHA1(+输入))

其实TOTP是HMAC-OTP(基于HMAC的一次性密码生成)的超集,不同的是TOTP是以当前时间为输入,而HMAC-OTP是以自增计算器为输入,需要使用同步。

练习

了解了以上原理,我们就可以实战了。

/** * 来源> 版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。:Java技术栈 */public class AuthTest {@Testpublic void genSecretTest() {String secret = GoogleAuthenticator.generateSecretKey();String qrcode = GoogleAuthenticator.getQRBarcodeURL("Java技术栈", "javastack.cn", secret);System.out.println("二维码地址:" + qrcode);System.out.println("密钥:" + secret);}@Testpublic void verifyTest() {String secret = "ZJTAQGLVOZ7ATWH2";long code = 956235;GoogleAuthenticator ga = new GoogleAuthenticator();boolean r = ga.verifCode(secret, code);System.out.println("是否正确:" + r);}}

第一种方法是生成一个密钥和一个绑定到扫描二维码的URL。

第二种方法是根据密钥和验证码进行身份验证。

这里只是类的源码逻辑参考。

如果你有收获,请点赞转发谷歌验证器找回密钥,也可以留言表达你的问题和意见。

版权声明:本文为《Java技术栈》原创。原创不易。转载或引用本文内容时请注明出处。禁止抄袭和编辑。请尊重自己,尊重他人的劳动成果和知识产权。

谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我QQ交流。
QQ号:2802364971

原文链接:基于时间与哈希的一次性器开启两步验证(组图),转载请注明来源!

0