阅读本篇文章你可以了解到谷歌验证器的实现原理,并且可以自己使用node.js实现支持谷歌验证器的两步验证。

这两年发现身边的很多应用和网站纷纷支持两步验证,并且呼吁用户使用两步验证。

并且发现,除了Apple ID的两步验证之外,其它两步验证很多能看到谷歌验证器(Google Authenticator)的身影。

这让我产生了浓厚的兴趣,到底谷歌验证器的原理是什么,我自己能实现一个类似的验证器吗?

什么是两步验证

两步验证就是当用户输入账号密码并验证成功之后,需要额外输入一串一次性随机密码(一般是4-6位的数字),服务器以此确认登录者是用户本人。

两步验证的类型

  1. 短信验证
    短信验证也是我们最熟悉最常用的两步验证,但是我认为短信验证有有以下几个缺点:需支付运营商短信费用、短信到达延迟、短信压根就没到达而网站不允许你立刻再次重发。相信你也有过等一条短信让你抓狂的经历。
  2. 动态密码器
    玩过网易游戏的同学应该知道网易将军令,还有部分银行提供的动态密码器。我记得我以前第一次见到这个东西的时候就觉得很神奇,这东西不用联网居然就能验证用户。实际上它的实现原理和Google验证器的实现原理差不多,后面我们会详细讲到。
  3. 口令卡
    口令卡是我认为最反人类的设计。曾经办工商银行网上银行的时候就有过一张,它上面是以矩阵的形式排列若干个字符,系统会给你一些坐标,要求你根据坐标找出相应的字符输入到系统。

    谷歌验证器的原理及JS实现的更多相关文章

    1. PHP设置谷歌验证器(Google Authenticator)实现操作二步验证

      使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码.实现Google Authenticator功能需要服务 ...

    2. Teambition如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  Teambition如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1 ...

    3. 数字货币交易所(火币为例)如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  数字货币交易所(火币为例)如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优 ...

    4. 亚马逊如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  亚马逊如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载ap ...

    5. 火狐浏览器如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  火狐浏览器如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载 ...

    6. 印象笔记如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  印象笔记如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载a ...

    7. 华为云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接  华为云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载ap ...

    8. 阿里云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器?

      阿里云如何使用二次验证码/虚拟MFA/两步验证/谷歌验证器? 见如上链接中视频

    9. vue-validator(vue验证器)

      官方文档:http://vuejs.github.io/vue-validator/zh-cn/index.html github项目地址:https://github.com/vuejs/vue-v ...

    随机推荐

    1. fiddler添加IP列

      willow一个规则管理插件 Ctrl+F查找“static function Main()”字符串,然后添加以下代码: FiddlerObject.UI.lvSessions.AddBoundCol ...

    2. ElementPath

      ElementTree库附带了一个简单的类似XPath的路径语言ElementPath主要区别在于,可以在ElementPath表达式中使用{namespace}标记符号但是,诸如值比较和函数之类的高 ...

    3. Bit Manipulation-leetcode

      Bit Manipulation Find the Difference /* * Given two strings s and t which consist of only lowercase  ...

    4. 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)

      目录 一. 概述 二. 线程与进程 三. cluster模块源码解析 3.1 起步 3.2 入口 3.3 主进程模块master.js 3.4 子进程模块child.js 四. 小结 示例代码托管在: ...

    5. 使用 Polly 实现复杂策略(超时重试)

      一.背景 第一次接触 Polly 还是在做某个微服务系统的时候,那时只会使用单一的超时策略与重试策略,更加高级的特性就没有再进行学习了.最近开为某个客户开发 PC 端的上位机的时候,客户有个需求,在发 ...

    6. Web前端基础(10):JavaScript(四)

      1. 伪数组arguments arguments代表的是实参.有个讲究的地方是:arguments只在函数中使用. 1.1 返回参数个数 返回函数实参的个数:arguments.length 例子: ...

    7. Python菜鸟文本处理4种方法

      自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python的文本处理的一些小方法. 话不多说,代码撸起来. python大小写字符互换 在进行大小写互换 ...

    8. PlayJava Day017

      今日所学: /* 2019.08.19开始学习,此为补档. */ 1.数组变量 a.数组变量是数组的管理者而非数组本身 b.数组必须创建出来然后交给数组变量来管理 c.数组变量之间的赋值是管理权限的赋 ...

    9. HTML实例之搜索栏(附源码)

      1. 简书类 实现效果 html代码 <div class="container"> <form action="" class=" ...

    10. CSS样式继承性

      CSS样式继承介绍 外层元素身上的样式会被内层元素所继承. 当内层元素身上的样式与外层的元素身上的样式相同时内层元素样式会覆盖外层元素样式. 并不是所有的样式都能够继承,只有文本与字体样式属性才能够被 ...