Password will be generated in the form 'word'+digits+'word' eg.,nice137pace instead of a difficult-to-remember - K8Yn9muL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | ## Generate a human readable 'random' password
## password will be generated in the form 'word'+digits+'word'
## eg.,nice137pass
## parameters: number of 'characters' , number of 'digits'
## Pradeep Kishore Gowda <pradeep at btbytes.com >
## License : GPL
## Date : 2005.April.15
## Revision 1.2
## ChangeLog:
## 1.1 - fixed typos
## 1.2 - renamed functions _apart & _npart to a_part & n_part as zope does not allow functions to
## start with _
def nicepass(alpha=6,numeric=2):
"""
returns a human-readble password (say rol86din instead of
a difficult to remember K8Yn9muL )
"""
import string
import random
vowels = ['a','e','i','o','u']
consonants = [a for a in string.ascii_lowercase if a not in vowels]
digits = string.digits
####utility functions
def a_part(slen):
ret = ''
for i in range(slen):
if i%2 ==0:
randid = random.randint(0,20) #number of consonants
ret += consonants[randid]
else:
randid = random.randint(0,4) #number of vowels
ret += vowels[randid]
return ret
def n_part(slen):
ret = ''
for i in range(slen):
randid = random.randint(0,9) #number of digits
ret += digits[randid]
return ret
####
fpl = alpha/2
if alpha % 2 :
fpl = int(alpha/2) + 1
lpl = alpha - fpl
start = a_part(fpl)
mid = n_part(numeric)
end = a_part(lpl)
return "%s%s%s" % (start,mid,end)
if __name__ == "__main__":
print nicepass(6,2)
|
Other receipies like: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/59873 generate a strong albeit difficult to remember password.
This script will be useful in cases where you are sending auto-generated passwords to registrants(say) over email. This password is difficult than a dictionary word, at the same time easy enough to 'read' and remember by the recipient.
Nice sounding algorithm. It's a nice recipe. Your algorithm for getting nice sounding words with random characters is to alternate between consonants and vowels (all the if i%2 == 0 statements). With this, you cannot get your example password 'nice137pass' but something like 'nice137pace'. You can also add 'y' to your vowel list to get some more pronounceable phrases.
--Hemanth P.S.
This is similar. http://www.adel.nursat.kz/apg/