Generating Random Passwords
Credit: Devin Leung
Problem
You need to create new passwords randomly—for example, to assign them automatically to new user accounts.
Solution
One of the chores of system administration is installing a lot of new
user accounts. Assigning each new user a different, totally random
password is a good idea in such cases. Save the following as
makepass.py:
from random import choice
import string
# Python 1.5.2 style
def GenPasswd(length=8, chars=string.letters+string.digits):
newpasswd = []
for i in range(length):
newpasswd.append(choice(chars))
return string.join(newpasswd,'')
# Python 2.0 and later style
def GenPasswd2(length=8, chars=string.letters+string.digits):
return ''.join([choice(chars) for i in range(length)])Discussion
This recipe is useful when creating new user accounts and assigning
each of them a different, totally random password. The
GenPasswd2 version shows how to use some features
that are new in Python 2.0 (e.g., list comprehensions and string
methods).
Here’s how to print out 6 passwords (letters only, of length 12):
>>> import makepass, string >>> for i in range(6): ... print makepass.GenPasswd2(12, string.letters) ... uiZWGSJLWjOI FVrychdGsAaT CGCXZAFGjsYI TPpQwpWjQEIi HMBwIvRMoIvh otBPtnIYWXGq
Of course, such totally random passwords, while providing an excellent theoretical basis for security, are impossibly hard to remember for most users. If you require users to stick with them, many users will probably write down their passwords somewhere. ...