Guest User

Untitled

a guest
Jun 22nd, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. import string
  2. import secrets
  3.  
  4. # Returns a randomly generated sequence of characters of provided length with at least one digit and upper case letter.
  5. # The first character must be a letter. It will also ensure that at least one character in the parameter, symbols, is provided
  6. # Input:
  7. # length: Int; Length of the random sequence. Default is 8.
  8. # chars: String; Character set for generating random character. Default is all letters and numbers.
  9. # symbols: String; Additional characters to add to character set Default is None.
  10. # Output:
  11. # passwd: String; Contains none if length provided is less than 4. Otherwise contains the random sequence as a string.
  12. def password_generator(length=8, chars=string.ascii_letters + string.digits, symbols=None):
  13. if length < 4:
  14. return None
  15.  
  16. secrets.SystemRandom()
  17. if symbols is not None:
  18. chars = string.ascii_letters + string.digits + symbols
  19. while True:
  20. passwd = ''.join(secrets.choice(chars) for i in range(length))
  21. if symbols:
  22. if (any(c.islower() for c in passwd)
  23. and any(c.isupper() for c in passwd)
  24. and any(c.isdigit() for c in passwd)
  25. and passwd[0].isalpha()
  26. and any((c in symbols) for c in passwd)):
  27. break
  28. else:
  29. if (any(c.islower() for c in passwd)
  30. and any(c.isupper() for c in passwd)
  31. and any(c.isdigit() for c in passwd)
  32. and passwd[0].isalpha()):
  33. break
  34. return passwd
Add Comment
Please, Sign In to add comment