密码生成器想法?

时间:2013-01-24 05:04:29

标签: python passwords

在Python中,我想写一个密码生成器。

您认为我应该在程序中添加哪些内容来帮助您创建一个好的,强密码?

一句话答案就足够了。我只是想开始一个思考过程。

5 个答案:

答案 0 :(得分:5)

本着xkcd漫画的精神......

>>> import random
>>> def password_gen():
...   with open('/usr/share/dict/words') as f:
...     words = [w.strip().lower() for w in f if w.strip().isalpha()]
...   while True:
...     yield ' '.join(random.sample(words, 4))
... 
>>> g = password_gen()
>>> next(g)
'mansion yodelling sumner coordination'
>>> next(g)
'proving velvetiest upload muggers'
>>> next(g)
'southey unfortunately longshoremen settings'
>>> next(g)
'inundated mules coevals vicious'

答案 1 :(得分:2)

import random

random.choice(['password', 'password1'])

答案 2 :(得分:0)

首先,为生成的密码定义要选择的字符,string module中定义的常量在此处可能会有所帮助。然后,使用random module选择这些字符的随机选择,例如:

import string
import random

def random_password(alphabet=string.ascii_letters+string.digits, length=8):
    return ''.join(random.sample(alphabet, length))


>>> random_password()
'KwYGBtFb'
>>> random_password()
'CJOSx8tj'
>>> random_password()
'62BNJyX5'

答案 3 :(得分:0)

您可以使用uuid module

import uuid
print uuid.uuid4()

答案 4 :(得分:0)

请注意,随机生成密码几乎总是一个坏主意。而是使用长唯一的重置键实现某种密码重置算法。例如,根据Andbrews的回答用uuid生成。

然而,如果你以某种方式无法实现重置程序,可能是因为你的客户/老板只是拒绝听取理由,那么至少实现一个功能,这意味着一旦用户收到他的新密码,他必须将其更改为新密码,以便提供给用户的密码(在纸上或通过电子邮件,因此可供所有人使用)必须更改为他/她知道的内容。

要考虑的另一件事是确保密码无法猜测,即使您知道以前发出的密码。因此,请勿使用随机模块。我引用:

  

Python使用Mersenne Twister作为核心生成器。它产生   53位精度浮点数,周期为2 ** 19937-1。潜在的   C中的实现既快又线程安全。 Mersenne Twister   是最广泛测试的随机数发生器之一   存在。但是,完全确定性,它是不合适的   出于所有目的,并且完全不适合加密   目的。

相反,随机密码的基础应为os.urandom()。但是,它会生成一系列二进制字节,因此必须进行更改。可以使用binascii模块。我建议使用hexlify(),它使密码最容易输入,根本没有奇怪的字符:

>>> import os
>>> import binascii

>>> binascii.hexlify(os.urandom(10)).strip()
'7b2d0d5e40c18938bca9'