我这样做是为了测试randint的随机性:
>>> from random import randint
>>>
>>> uniques = []
>>> for i in range(4500): # You can see I was optimistic.
... x = randint(500, 5000)
... if x in uniques:
... raise Exception('We duped %d at iteration number %d' % (x, i))
... uniques.append(x)
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
Exception: We duped 887 at iteration number 7
Run Code Online (Sandbox Code Playgroud)
我尝试了大约10倍以上,我得到的最好结果是在转发器之前迭代了121次.这是您从标准库中获得的最佳结果吗?
是否可以使用AES加密/解密数据而无需安装额外的模块?我需要发送/接收数据C#,这些数据是用System.Security.Cryptography参考加密的.
更新
我尝试使用PyAES,但这太旧了.我更新了一些东西以使其成功,但事实并非如此.我也无法安装,因为它的最新版本是3.3我的版本3.4.
我在标准库中阅读python的随机模块.令我惊讶的是,当我设置种子并产生一些随机数时:
random.seed(1)
for i in range(5):
print random.random()
Run Code Online (Sandbox Code Playgroud)
产生的数字与文章中的样本完全相同.我认为可以肯定地说,当种子设置时,算法是确定性的.
当种子未设置时,标准库种子用time.time().现在假设一个在线服务用于random.random()生成验证码,黑客可以使用相同的随机生成器轻松地重现验证码吗?
我是否担心太多,或者这是一个真正的漏洞?