到目前为止,在使用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
生成保留变量。这个不可回避? 最佳答案
time.time
仅在系统时钟在您下面更新时才向后退-由于DST不适用于自秒以来的秒,因此在使用ntp使其时钟保持最新的系统上永远不会发生这种情况。
* nix专用解决方案是在启动时添加检查,以确保ntpd在生成第一个随机数之前正在运行。一旦运行,ntpd就不会倒转时钟(它只会使时钟向前慢一点,而不是每秒1秒),因此这可能对您来说是一个足够的保证。
这完全取决于您的情况以及风险和安全性权衡的需求,但是我建议这是一种学术问题,而不是实际问题。
关于python - 产生越来越多的Nonce,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41718753/