Python 根据时间选择一个随机数有多安全?

Python 根据时间选择一个随机数有多安全?,python,random,cryptography,random-seed,Python,Random,Cryptography,Random Seed,如果我有一个在线聊天室,其中有10个用户在不同的时间到达,并且我想在聊天室客满后随机挑选一个用户,那么使用最后一个用户加入聊天室的时间戳选择该用户并简单地执行%10操作是否安全 时间戳将以毫秒为单位 如果我的问题的答案是“否”,那么在选择时间戳之前添加一个随机延迟会更好吗?安全原因是什么?什么样的时间戳,小时数 如果使用定时,则它通常是具有最佳精度的时间源,并且使用多个增量,而不是直接使用时间戳 所有这些都完全不如操作系统随机生成提供的加密库中的PRNG。操作系统有更多的熵源(现在很多CPU中都

如果我有一个在线聊天室,其中有10个用户在不同的时间到达,并且我想在聊天室客满后随机挑选一个用户,那么使用最后一个用户加入聊天室的时间戳选择该用户并简单地执行%10操作是否安全

时间戳将以毫秒为单位


如果我的问题的答案是“否”,那么在选择时间戳之前添加一个随机延迟会更好吗?

安全原因是什么?什么样的时间戳,小时数

如果使用定时,则它通常是具有最佳精度的时间源,并且使用多个增量,而不是直接使用时间戳

所有这些都完全不如操作系统随机生成提供的加密库中的PRNG。操作系统有更多的熵源(现在很多CPU中都有真正的随机发生器)

仅仅执行mod 10有点危险(如果计时器由于精度不足而偏向于使用偶数怎么办?),通常我们将熵输入加密安全的伪随机数生成器(CS-PRNG)


如果这些速度不够快(是吗?),并且安全性不是您的主要需求,那么您可以使用更快的非安全PRNG或快速流密码。

我相信需要质量“随机性”的加密等应用程序通常会结合多个熵源。类似这样的事情,涉及人类活动的少量时间可能是一种来源。是的,正如@aschepler所提到的,如果你在做与安全相关的事情,那么这可能不是最好的方法。时间不够随机(结果是“伪随机”数)。但是如果它不需要真正的随机数,那么是的,时间应该是确定的。如果你真的想要随机数,你可以使用python库与之接口