Basic Password Generator
Last updated
Last updated
Create a Python script that will generate a password with given parameters.
Requires password length
Requires password criteria
Does it contain uppercase characters?
Does it include numbers?
Does it include special characters?
Generate a password with the given constraints
Output the generated password
We are ignoring input validations for this exercise.
Imports: The random
module is imported to generate random characters and numbers.
Character Sets:
lowercase
: Contains ASCII values for lowercase letters (97-122).
uppercase
: Contains ASCII values for uppercase letters (65-90).
digits
: Contains ASCII values for digits (48-57).
special
: Contains ASCII values for special characters (33-47, 58-64, 91-96, 123-126).
ASCII stands for American Standard Code for Information Interchange.
ASCII is a character encoding standard that assigns numeric codes to represent characters. Each character, like letters ('A' to 'Z', 'a' to 'z'), digits ('0' to '9'), and special symbols, has a unique integer value in the ASCII table.
By using the chr()
function in Python, you can convert these integer values to their corresponding characters, allowing for text representation in digital communications and computing.
Initialization:
password
: Starts as an empty string where the generated password will be stored.
options
: Initially set to lowercase.copy()
, assuming every password will include lowercase letters.
User Input:
size
: User defines the length of the password.
has_upper
, has_digit
, has_special
: Users choose whether to include uppercase letters, digits, and special characters, respectively.
Processing:
Step 1: Based on user input (has_upper
, has_digit
, has_special
), appropriate character sets (uppercase
, digits
, special
) are added to options
.
Step 2: A while
loop continues until password
reaches the desired length (size
). In each iteration:
random.choice(options)
picks a random ASCII value from options
.
chr()
converts the ASCII value to its corresponding character.
The character is appended to password
.
Output:
Finally, the generated password (password
) is displayed to the user.
A weak password is one that is easy to guess or crack, often due to its simplicity, common usage, or predictability. Characteristics of weak passwords include:
Short length: Typically less than 8 characters.
Common words or sequences: Such as "password", "123456", "qwerty", or "abc123".
Personal information: Easily obtainable information like a user’s name, birthdate, or phone number.
Lack of variety: Using only letters, or only numbers, without mixing in other character types.
A strong password is designed to be difficult to guess or crack, thereby enhancing security. Characteristics of strong passwords include:
Long length: Typically 12 characters or more.
Complexity: A mix of uppercase and lowercase letters, numbers, and special characters (examples: @, #, $, %
).
Unpredictability: Avoiding common words, phrases, and predictable patterns.
Uniqueness: Different passwords for different accounts to prevent a breach on one site from compromising others.