Basic Password Generator

Goal

Create a Python script that will generate a password with given parameters.

Program Requirements

  1. Requires password length

  2. Requires password criteria

    • Does it contain uppercase characters?

    • Does it include numbers?

    • Does it include special characters?

  3. Generate a password with the given constraints

  4. Output the generated password

We are ignoring input validations for this exercise.

Python Translation

Code Explanation

  • 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).

circle-info

What is ASCII?arrow-up-right

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 tablearrow-up-right.

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.

Connected Readings

General Password Tips

Weak Passwords

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.

Strong Passwords

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.

Last updated