pw-gen
is a library which deals with generating secure randomised passwords that are customisable and strong simultaneously.
Use the package manager pip to install pw-gen.
pip install pw-gen
pip install --upgrade pw-gen
NOTE: If you are still using older versions of pw-gen please download the latest version as examples in this README will likely be incorrect for old versions. Thankyou.
from pw_gen import Simple
var = Simple(20)
print(var.generate())
print(var.result())
pcWW1QjppIWkzErqjdh8
from pw_gen import Complex
var = Complex(20, 'both', include_numbers=True, include_special_chars=True)
print(var.generate())
print(var.result())
\{=~#YR>XR@N+Q3K{WFB
from pw_gen import Memorable
var = Memorable(True)
print(var.generate())
print(var.result())
CobrandFlint0825
Creating a password
To customise and generate our password we must first create an instance of our password. This can be acheived by doing var_name = type_of_password(args). This template can be used for all password types. At the moment, there are three varations of a password Simple, Complex and Memorable.
Simple password require less arguements than a complex password, and it is also a base class that all other variations are derived from. To make a Simple password, we can assign to parameters: one of which is mandatory and the other one is optional. The first parameter is password length. This should be an integer. The second one is characters. It defaults to a string of ascii_letters and ascii_digits. However, you can overwrite this by specifying your own as a string. Example of how to create a Simple password:
from pw_gen import Simple
var1 = Simple(20) # Specifying password length to 20 and characters will default to letters and numbers
var2 = Simple(20, 'abcdefghijklmnopqrstuvwxyz') # Specifying password length to 20 and characters will be set to the ones specified.
Complex passwords require 2 mandatory parameters and 2 optional parameters. Param 1 is password length (an int), param 2 is string_method. string_method refers to upper (upper case), lower (lowercase) and both (uppercase and lowercase). These arguements should be strings. The last two parameters are include_numbers (defaults to True) and include_special_chars (defaults to False). These are keyword-only parameters. They can be set to True or False. Therefore, they must be explicitly stated. E.g arg=bool
Example of how to create a Complex password:
from pw_gen import Complex
var = Complex(20, 'both', include_numbers=True, include_special_chars=True)
Lastly, a Memorable password is a password that can be easily remembered. It uses 2 random words from the random_word
library. It then gets 3-4 random numbers and adds them to the end of the password. We can create a Memorable password by assigning 1 parameter which is include_numbers (this defaults to True). Example of how to create a Memorable password:
from pw_gen import Memorable
var = Memorable()
Generating a password(s)
To generate a password we have to use the 'generate' method with our object. The generate method requires no parameters. To generate a password, we will first have to create an object (see Creating a password). We then use the generate
method as seen in the example below:
from pw_gen import {insert password type}
var = {insert password type}(args)
var.generate()
# or
print(var.generate)
To generate muliple passwords we can use a for loop:
from pw_gen import {insert password type}
var = {insert password type}(args)
for i in range(INSERT NUM):
print(var.generate())
Note: If you generate one password (password1), and then generate another password (password2) with the same object, password1 will be cleared and replaced by password2. Therefore, if you would like to keep a password, simply append it to a list of passwords or or store them in a file, database etc.
Returning a password
To return a generated password we can simple use the result()
method:
from pw_gen import {insert password type}
var = {insert password type}(args)
print(var.generate())
print(var.result())
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.