moh4mmad / php-otp-without-database
不使用数据库的基于密码学的OTP验证
1.0.0
2019-10-15 15:27 UTC
This package is auto-updated.
Last update: 2024-09-16 22:38:39 UTC
README
这是什么?
这是一个用php编写的简单脚本,用于在不使用任何数据库的情况下验证一次性密码(OTP)。您可以在这里阅读博客文章,了解技术和动机。
如何安装
git clone https://github.com/moh4mmad/php-otp-without-database.git
或
composer require moh4mmad/php-otp-without-database
使用方法
您需要额外的工具来发送短信。此模块只负责验证部分。
验证过程
OTP验证按以下步骤进行
- 使用电话号码/电子邮件地址创建一个哈希值,然后发送给用户。
- 用户也通过短信、电子邮件或其他方式接收OTP。
- 用户发送回哈希值、OTP以及首次请求中使用的电话/电子邮件。
- 服务器验证信息,如果匹配则返回true。
生成OTP哈希值
$otp = new Sakib\OTP;
$email = "test@abc.com";
$code = $otp->generateRandomString(6);
$hash = $otp->CreateOTP($email, $code);
然后您可以将此哈希值作为响应发送给用户。
CreateOTP($email, $otp, $key = "verysecret", $min = 5, $algo = "sha256");
验证OTP哈希值
用户应从HTTP请求中获取哈希值,并通过短信或电子邮件获取真实的OTP。然后当用户发送回信息时,可以使用以下代码进行验证
VerifyTOP($email, $otp, $hash, $key="verysecret", $algo = "sha256");
此方法返回一个布尔值。如果验证成功,它将返回true。
问题
如果您遇到任何问题,请在此处报告。