谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
阅读本篇文章你可以了解到谷歌验证器的实现原理,并且可以自己使用node.js实现支持谷歌验证器的两步验证。
这两年发现身边很多应用和网站都支持两步验证,号召用户使用两步验证。
发现除了Apple ID的两步验证,其他很多两步验证都可以看到 ( )。
这让我很感兴趣, 的原理到底是什么,我可以自己实现一个类似的吗?
什么是两步验证
两步验证是指当用户输入账号密码且验证成功后,需要额外输入一串一次性随机密码(一般为4-6位),服务器确认登录为用户本人。
两步验证的类型
短信验证
短信验证也是我们最熟悉和最常用的两步验证,但我认为短信验证有以下缺点:需要支付运营商短信费用,短信到达延迟,短信根本没有到达并且网站不允许您立即重新发送。相信你也有过等短信让你发疯的经历。
动态密码
玩过网易游戏的同学应该知道网易通用指令,以及部分银行提供的动态密码器。记得第一次看到这个东西的时候,很神奇,这个东西不用联网就可以认证用户。其实它的实现原理和类似,后面我们会详细讨论。
密码卡
在我看来,密码卡是最反人类的设计。我以前做工行网上银行的时候有一个。它有几个字符以矩阵的形式排列。系统会给你一些坐标,让你找出对应的字符,根据坐标输入到系统中。 ?%&¥#...(*#) 我没用过。不可能,这辈子都不可能用密码卡了。 .
两步验证的重要性
两步验证从用户体验的角度来看肯定是不友好的,因为当用户登录或操作启用了两步验证的网站时,用户需要额外输入一个随机密码来确认用户是自己经营。对于大多数人来说,这个操作可能会觉得多余和繁琐。关掉太麻烦了。
我建议对于比较重要的账户,如果应用提供两步验证,最好开启。安全第一。
我可以举起我身边的栗子吗?
2016 年左右,我女朋友的 Apple ID 被盗。黑客解开她的邮箱并切换到黑客的邮箱,导致她的女朋友被锁定。黑客还发邮件勒索500元解锁。我还加了黑客电报,和他讨价还价,砍到200块钱。最后当然是去苹果客服解锁了谷歌验证器怎么用,提供了各种照片、文件和电话确认,花了2天时间才解锁。一般没有损失,但是给我的生活带来了一些不便。看看知乎被黑,刷信用卡、刷支付宝的人,太惨了。
如果被盗者开启了两步验证,即使别人知道你Apple ID的账号密码,也无法登录你的账号。
此外,许多用户可能喜欢在多个网站上使用相同的密码,这是非常危险的。如果一个网站上的用户帐户被盗用,其他平台上的帐户也可能受到影响。毕竟,“某平台账号系统被盗”也时有发生。在这种情况下,开启两步验证也可以保护其他平台的账号不被不法分子利用。
HOTP 和
两步验证使用的密码为一次性密码(One-Time OTP),也称为动态密码。它是一种强大的身份验证技术,它使用加密技术在客户端和服务器之间共享密钥。增强目前的静态密码认证是一种非常方便的技术手段。它是一种重要的两步验证认证技术。解释
HOTP(基于 HMAC 的一次性)
HOTP是基于HMAC算法生成的一次性密码,也称为事件同步的动态密码。它是ITEF RFC 4226中公开的算法规范。伪代码如下:
HOTP(K,C) = (HMAC-SHA-1(K,C))
客户端和服务器预先协商一个密钥K,用于生成一次性密码。客户端和服务端各有一个事件计数器C谷歌验证器怎么用,计数器值提前同步。它是一种将 HMAC-SHA-1 生成的 20 字节字符串转换为多个十进制数字的算法。
TOTP(基于时间的一次性)
TOTP是HOTP的改进版,它用时间代替了HOTP的事件计数器C,也称为时间同步动态密码。详细规范见RFC 6238,伪代码:
TOTP = (HMAC-SHA-1(K,T))
T = (Unix 时间 - T0)/X
T0为初始测试时间,默认为0
X为时间步长,默认为30秒
官方文档给个栗子,假设当前unix时间=59,T0=0,X=30,那么T=1
假设当前unix时间=60,T0=0,X=30,则T=2
即T的值向下取整,舍弃小数
实施
一旦你理解了规范,编写代码就很容易了。
上面的算法不过是HMAC-SHA-1,贴一段JS代码:
// 将20字节的hmac结果转为6位数字,不够6位前面补0 truncat(hmac_result) { const offset = hmac_result[19].charCodeAt() & 0xf; const bin_code = (hmac_result[offset].charCodeAt() & 0x7f) << 24 | (hmac_result[offset + 1].charCodeAt() & 0xff) << 16 | (hmac_result[offset + 2].charCodeAt() & 0xff) << 8 | (hmac_result[offset + 3].charCodeAt() & 0xff); let otp = (bin_code % 10 ** this.digit).toString(); while (otp.length < this.digit) { otp = "0" + otp; } return otp; }
在线预览地址
代码已经上传到npm,支持node.js和浏览器执行
请移步我的完整代码
安装
npm install totp.js
使用
const TOTP = require("totp.js"); // generate a base32 secret key const key = TOTP.randomKey(); // "GAXGGYT2OU2DEOJR" const totp = new TOTP(key); const code = totp.genOTP(); // "552179" totp.verify(code) // true // generate Google Authenticator supported URL totp.gaURL("[email protected]", "Totp.js") // "otpauth://totp/[email protected]?issuer=Totp.js&secret=GAXGGYT2OU2DEOJR" // OR const totp2 = new TOTP(TOTP.base32.encode("your key")); totp2.genOTP()
参考
ITEF RFC 4226
ITEF RFC 6238
欢迎转载,转载请附上原文链接
谷歌锁区号/谷歌邮箱老号-购买商城
谷歌play地区代改
Google Voice号码支持自助购买
谷歌锁区号购买商城]
美区VISA卡代开-可以用于aws,azure,FB,谷歌,亚马逊,速卖通,eBay,独立站,paypal等支付
如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
原文链接:谷歌验证器的原理是什么,我能实现一个类似的验证器吗,转载请注明来源!