Google Authenticator,是谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题;许多安全性比较高的网站都会采用这种工具来验证登录或者交易;这个动态口令就是Google身份验证器每隔30s会动态生成一个6位数的数字。它的作用是:对你的账号进行“二步验证”保护,或者说做一个双重身份验证,来达到提升安全级别的目的。

通过 一致算法保持手机端和服务端相同,并每30秒改变认证码。

一致算法:

totp是基于时间的,htop是基于次数的。

秘钥生成原理(基于时间)

1、时间戳,精确到微秒,除以1000,除以30(动态6位数字每30秒变化一次)

2、对时间戳余数 hmac_sha1 编码

3、然后 base32 encode 标准编码

4、输出大写字符串,即秘钥

动态6位数字验证:

Google Authenticator会基于密钥和时间计算一个HMAC-SHA1的hash值,这个hash是160 bit的,然后将这个hash值随机取连续的4个字节生成32位整数,最后将整数取31位,再取模得到一个的整数。

这个就是Google Authenticator显示的数字。

在服务器端验证的时候,同样的方法来计算出数字,然后比较计算出来的结果和用户输入的是否一致。

Google Authenticator PHP类

https://github.com/PHPGangsta/GoogleAuthenticator

生成安全码并绑定手机

<?phprequire_once './PHPGangsta/GoogleAuthenticator.php';$ga = new PHPGangsta_GoogleAuthenticator();// 创建新的"安全密匙SecretKey"
// 把本次的"安全密匙SecretKey" 入库,和账户关系绑定,客户端也是绑定这同一个"安全密匙SecretKey"
// 安全密匙SecretKey 可以和手机端绑定
$secret = $ga->createSecret();echo "安全密匙SecretKey: " . $secret . "\n\n";//第一个参数是"标识",第二个参数为"安全密匙SecretKey" 生成二维码信息
$qrCodeUrl = $ga->getQRCodeGoogleUrl('www.xxx.com', $secret);//Google Charts接口 生成的二维码图片,方便手机端扫描绑定安全密匙SecretKey
echo "Google Charts URL for the QR-Code: " . $qrCodeUrl . "\n\n";

输出:

安全密匙SecretKey: M5X3M4PGBQRFPUTYGoogle Charts URL for the QR-Code: https://api.qrserver.com/v1/create-qr-code/?data=otpauth%3A%2F%2Ftotp%2Fwww.xxx.com%3Fsecret%3DM5X3M4PGBQRFPUTY&size=200x200&ecc=M

绑定手机方式

image.png

  • 通过安全秘钥
  • 通过二维码(图片地址就是Google Charts生成的可以直接打开)

    image.png

动态口令验证

image.png

<?phprequire_once './PHPGangsta/GoogleAuthenticator.php';$ga = new PHPGangsta_GoogleAuthenticator();// 把提交的验证码和服务端上生成的验证码做对比
// $secret 服务端的 "安全密匙SecretKey"
// $oneCode 手机上看到的 "一次性验证码"
// 最后一个参数 为容差时间,这里是2 那么就是 2* 30 sec 一分钟.
$oneCode = '371922';
$secret = 'M5X3M4PGBQRFPUTY';$checkResult = $ga->verifyCode($secret, $oneCode, 2);if ($checkResult) {//这里添加自定义逻辑echo '匹配! OK';
} else {echo '匹配! FAILED';
}

https://github.com/PHPGangsta/GoogleAuthenticator

php通过谷歌身份验证实现动态口令相关推荐

  1. Mac堡垒机密码加身份验证器动态口令全自动登录(带全局登录命令)

    公司堡垒机采用密码+身份认证器双重验证登录,每次登录都需要找手机或者浏览器上的谷歌身份验证器插件看动态码,特别不方便,折腾半天实现了mac上自动登录功能,记录一下. 需求描述: 实现免密登录 实现身份 ...

  2. Google authenticator 谷歌身份验证,实现动态口令

    Google authenticator 谷歌身份验证,实现动态口令 google authenticator php 服务端 使用PHP类 require_once '../PHPGangsta/G ...

  3. 动态令牌 (谷歌身份验证器)的实现

    动态令牌-(OTP,HOTP,TOTP)-基本原理:  https://www.cnblogs.com/navysummer/p/11943319.html 实现原理: https://blog.cs ...

  4. 使用谷歌身份验证器增强SSH安全

    一般大家都是使用账号和密码远程SSH登录管理服务器.但SSH账号和密码很容易泄露,或者经常遭遇暴力破解.咨询过前同事赛赛,他们目前使用了谷歌身份验证器.查看了谷歌身份验证器的github和其它网上文档 ...

  5. 如何为SSH登录建立双因子验证机制(谷歌身份验证器)?

    前言 默认情况下,SSH已经在远程机器之间使用安全的数据通信;但是如果你想为自己的SSH连接添加另外某种安全层,可以添加谷歌身份验证器(Google Authenticator)双因子验证模块,该模块 ...

  6. 使用谷歌身份验证器(Google Authenticator)保护你的后台

    为何要使用谷歌身份验证器 普通的网站只使用账号.密码.图形验证码进行后台登录.根据我(作为站长)多年的经验来看,这种方式安全性很低,尤其是使用 http 协议,明文的帐号和密码相当于在网络上裸奔.如果 ...

  7. 谷歌身份验证器 手表_6条使您的三星手表更加Google-y的提示

    谷歌身份验证器 手表 Samsung 三星 Samsung Galaxy watches are, arguably, the best smartwatches for Android phones ...

  8. 使用C++实现谷歌身份验证器(Google Authenticator)

    使用C++实现谷歌身份验证器(Google Authenticator) 本机环境: windows10 x64位运行环境 1.进入网站:http://slproweb.com/products/Wi ...

  9. 二次验证码小程序与谷歌身份验证器不同点是?

    名称1[二次验证码]小程序 名称2 谷歌身份验证器(Google Authenticator) 粗略对比两个产品异同 [二次验证码]小程序 搜索:微信搜索.微信目前65个小程序入口,倒是容易找到它 使 ...

最新文章

  1. 5G实时直播至关重要的4个原因
  2. 基于OIDC(OpenID Connect)的SSO
  3. 转: Spark 的核心概念 RDD
  4. oracle 的进程
  5. C语言课后习题(30)
  6. java中写sql语句的小小细节
  7. cocos2dx进阶学习之屏幕适配
  8. python验证码识别——前处理
  9. python游戏程序代码大全_童年游戏,Python一行代码就能实现!
  10. Dorado7使用常见问题,不定时持续更新。
  11. 计算机功能键盘使用方法,键盘的使用方法介绍 键盘上都有哪些功能按键
  12. CDR2021安装教程 CorelDRAW 2021完整版下载
  13. 无人驾驶刚刚开始的未来
  14. http://fonts.googleapis.com/css?打开很慢解决方案
  15. 基于Grafana的Web监控报警
  16. micropython 串口 wifi_MicroPython实现wifi干扰与抓包
  17. 三维荧光学习记录--在Origin中绘制三维荧光光谱图(补充)及荧光区域积分(FRI)
  18. Android逐帧动画——让图片动起来
  19. 推广中文域名的重要性和建议
  20. avc水平什么意思_AVC是什么?

热门文章

  1. 用python画颗爱心祝生日快乐_Python 一键生成漂亮的生日快乐词云!
  2. 【项目实战】Python基于GARCH模型进行预测特斯拉股票,以及评估金融资产的风险
  3. Android触控手感没有苹果好,硬核科普:为什么iPhone玩游戏的手感比大部分安卓都强?...
  4. matlab 卷积码函数,MATLAB实现卷积码编译码-.doc
  5. qss 更改图标_qss 界面大全
  6. 7.2 客户区鼠标消息
  7. 带中点电位平衡的基于载波注入NPC三电平SVPWM调制方式_SIMULINK模型
  8. python 双目视觉_球体的双目视觉定位(matlab,附代码)
  9. Mmap fs可能让大索引访问变得缓慢
  10. BUUCTF Crypto Rabbit