我想构建生成6位密码的python算法。我有很多想法,比如:基于时间,基于id ......等等,但是一旦算法暴露出来,就没有听起来很安全。现在我正在尝试使用random.randint(a, b)
生成它,但是我想知道它是如何工作的并且python文档没有提供太多关于它。那么请你提供更多关于这个或任何其他建议来生成6位数的密码。
答案 0 :(得分:1)
默认情况下,此方法会返回一个6个数字大小的字符串,如果传入的值与传入的数字一样多。
import string
import random
def id_generator(size=6, chars=string.digits):
return ''.join(random.choice(chars) for x in range(size))
打印(id_generator())
123123
打印(id_generator(10))
1234512345
答案 1 :(得分:1)
安全实现此操作的最简单方法是使用操作系统的随机数生成器(random.SystemRandom()或os.urandom(n))来生成数字。对于使用默认生成器,official documentation有一个很好的警告。
一点需要注意的是,SystemRandom()显然不能在所有系统上运行,但我可以告诉no one's quite sure哪些系统不支持它。
除此之外,random.SystemRandom()。randint()应该可以正常工作。
答案 2 :(得分:0)
您可以尝试将其作为一个非常简单的解决方案:
#!/usr/bin/env python
from random import choice
from string import digits
code = list()
for i in range(6):
code.append(choice(digits))
print ''.join(code)
输出类似:
455799
答案 3 :(得分:-1)
您始终可以使用直接方法,尽管这比Python更像Fortran。您还可以将其用作密钥生成器。
{{1}}