到目前为止,在使用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/

10-10 18:19