我正在尝试在我的项目中实现基于时间的 OTP,其中代码生成和代码验证将由同一台服务器完成。我的全部要求是生成一个应该在一段时间内有效(可配置)的 OTP,然后将其发送到用户电子邮件,并可选择将密码重新发送到用户的电子邮件。
我可以理解,一旦我们为具有时间步长的特定密钥生成代码,对于该特定时间步长,它将为相同的密钥生成相同的代码。但是使用这种方法的问题是假设时间步长为 5 分钟,生成一个代码并在 5 分钟内有效。现在 6 分钟后,如果我再次发送代码,那么新代码将仅在接下来的 4 分钟而不是 5 分钟内有效,因为它是在之前的代码过期后生成的。
理想情况下,它应该在用户为 OTP 提出请求后 5 分钟内有效。