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。

问题

如果您遇到任何问题,请在此报告。