This tutorial will show you how to generate one secured random string of specific length in python. In most cases, we need to create a random string. For example, if you are storing some information and you need one key for that, you can create one random string and use it.
Note that, even though we are generating one random string in this example, there is a slight possibility that the program will generate one same string on two different execution. So, if you want to generate random strings for your production server, make sure to add extra layer of calculation like adding the current server date/time etc. to make it more unique.
To get a random string, we need to pick one random character from all the characters that we have. For that, we will use two constant fields defined in python string class :
- ascii_letters : It is the combination of all ASCII lowercase and upper case letters. If you want only upper case or lower case letters, you can use ascii_lowercase or ascii_uppercase.
- digits: It is the string 0123456789
So, we can generate the random string by randomly picking characters from ascii_letters and digits.
Python provides one module called random for random data generation. To get one random character from a string, we will use the below method :
If we pass one string or any sequence to this method, it will return one random character.
For python 3.6 and above, you can use another module called secrets. This is used to generate cryptographically strong random values those are useful for any secure operations.
It also provides the same choice method :
In this example, we will use this method.
Let me show you the python program :
import secrets import string char_string = string.ascii_letters + string.digits def getRandomString(size): return ''.join(secrets.choice(char_string) for _ in range(size)) print(getRandomString(4)) print(getRandomString(10)) print(getRandomString(24))
Here, we are using join to join all random characters that we have created using a for loop and secrets.choice.
It will create one output as like below :
DETX M0OGExhxee 2afe6iy6VG6ZjtlygjYxlqK8