什么是一次性密码

一次性密码 (OTP) 是一种密码。
它只能对任何数字设备上的一个登录会话或者交易有效。

OTP 有助于避免与基于密码的静态身份验证相关的缺点。

此类密码最重要的好处之一是,与静态密码相反,它们可以免受重放攻击。

OTP 的缺点是人类很难记住它们。

如何在 PHP 中生成一次性密码

在现代世界中,几乎每项服务都需要一次性密码 (OTP)。

开发人员可以很容易地生成 OTP。
但是,存在一个基本挑战:不要创建预测密码来避免服务被利用。

其中我们将展示如何生成合适的 OTP。

生成 N 位数字 OTP

生成 OTP 最常用的方法之一是使用随机函数。

然而,这个选项还不够值得信赖。

这就是为什么,我们将演示另一种使用随机函数以及创建 n 位数字 OTP 的算法的方法。

让我们来看看:

<?php
//生成一次性密码的函数
function generateNumericOTP($n)
{

  //包含所有数字的字符串
  //
  $generator = "1359702468";

  //迭代 n 次并从生成器中选择一个字符并将其附加到 $result
  //

  //Login for generating a random character from generator 
  //   ---generate a random number 
  //   ---take modulus of same with length of generator (say i) 
  //   ---append the character at place (i) from generator to result 

  $result = "";

  for ($i = ; $i <= $n; $i++) {
    $result .= substr($generator, (rand() % (strlen($generator))), );
  }

  //Returning the result 
  return $result;
}
//Main program 
$n = ;
print_r(generateNumericOTP($n));
?>

此示例的输出将是:

561862
日期:2020-06-02 22:15:49 来源:oir作者:oir