如何使用Django生成基于时间的一次性密码(OTP)

时间:2018-04-30 06:46:01

标签: python django python-3.x

我使用以下代码生成随机字符串作为OTP -

from django.utils.crypto import get_random_string

otp = get_random_string(6, allowed_chars='0123456789')

问题在于人们要求许多OTP的短信发送问题,然后当他们一起到达时,他们不知道哪一个目前有效。

我想生成一个不会因 30分钟而改变的OTP,并且对于每个电话号码都是唯一的 +919999999999

1 个答案:

答案 0 :(得分:3)

如果你想确定性,只需将整数除以当前时间戳30分钟,将其与电话号码和秘密盐连接起来,然后将它们全部哈希。

或者你可以生成一个随机的并将其存储在Django缓存中,有效期为30分钟。