【发布时间】:2017-06-02 19:00:48
【问题描述】:
到目前为止,在使用 API 进行身份验证时,我已经使用它生成了一个简单的nonce:
def nonce():
return str(int(time.time()) * 1000)
It has now been pointed out to me,这并不完全安全,因为time.time() 可能会倒退:
>>> import time
>>> time.get_clock_info('time').monotonic
False
我将如何生成nonce?
我的第一个猜测是使用randint,但由于我需要确保nonce 始终在增加,我不太确定如何确保这一点,而不为未来的nonce 代保存变量 - 或者是这是不可回避的?
【问题讨论】:
-
from datetime import datetime; nonce = str(datetime.now().timestamp()).replace('.', '')这样的东西怎么样?还是有同样的问题?还是太容易猜到了?