php通过谷歌身份验证实现动态口令

php通过⾕歌⾝份验证实现动态⼝令
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类
⽣成安全码并绑定⼿机
<?php
require_once './PHPGangsta/GoogleAuthenticator.php';
自动杀菌净手器$ga = new PHPGangsta_GoogleAuthenticator();
// 创建新的"安全密匙SecretKey"
// 把本次的"安全密匙SecretKey" ⼊库,和账户关系绑定,客户端也是绑定这同⼀个"安全密匙SecretKey"
// 安全密匙SecretKey 可以和⼿机端绑定
$secret = $ga->createSecret();
雷米迪维
echo "安全密匙SecretKey: " . $secret . "\n\n";
//第⼀个参数是"标识",第⼆个参数为"安全密匙SecretKey" ⽣成⼆维码信息
$qrCodeUrl = $ga->getQRCodeGoogleUrl('', $secret);
//Google Charts接⼝⽣成的⼆维码图⽚,⽅便⼿机端扫描绑定安全密匙SecretKey
echo "Google Charts URL for the QR-Code: " . $qrCodeUrl . "\n\n";
输出:
安全密匙SecretKey: M5X3M4PGBQRFPUTY
Google Charts URL for the QR-Code: api.qrserver/v1/create-qr-code/?data=otpauth%3A%2F%%3Fsecret%3DM5X3M4PGBQ 绑定⼿机⽅式
image.png
按摩毯
通过安全秘钥
通过⼆维码(图⽚地址就是Google Charts⽣成的可以直接打开)
image.png给皂器
动态⼝令验证
image.png
<?php
require_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';
}

本文发布于:2024-09-22 04:36:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/273082.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证   动态   时间   绑定
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议