How to Generate Random Cryptographically Secure Passwords in Python

Sometimes it is necessary to generate cryptographically secure strings/passwords randomly in Python. You can do this using the secrets package, which provides the most secure source of randomness that your operating system provides.


Generate Secure Random String

Let's begin by generating a secure random string 10 characters long, using upper and lower case letters from the Python string package.


import secrets
import string

secure_string = ''.join((secrets.choice(string.ascii_letters) for i in range(10)))



Generate Secure Random Password

To create a secure password we will need to use combination of letters, digits and punctuation characters like this:


chars = string.ascii_letters + string.digits + string.punctuation

password = ''.join((secrets.choice(chars) for i in range(10)))