⚠️ Warning: Do not attempt to memorize passwords generated by this tool. Instead, use a reliable password manager, such as Bitwarden. The only password you should memorize is the master password for your password manager's vault.
🔧 Password Generator
🎨 Block III
Custom
Customizable length (15-128 characters) with all character types
🧩 Block I & II
I
II
Predefined modes 1-20 with specific configurations
Custom Mode (Block III): Configure length and character types according to your needs
Your password will appear here
Length: -
Entropy: - bits
Strength: -
Mode: -
📊 Password Mode Blocks
Block I
Modes 1-10
With ambiguous characters, fixed length of 24 characters
Ideal for general-purpose passwords where slight loss of readability is acceptable for higher entropy.
Ideal for general-purpose passwords where slight loss of readability is acceptable for higher entropy.
Block II
Modes 11-20
Mixed configurations, various lengths (15-128 characters)
For sensitive applications, excluding ambiguous characters for better readability.
For sensitive applications, excluding ambiguous characters for better readability.
Block III
Custom Mode
Customizable length (15-128 characters)
Full control over all configurations. Use when predefined modes don't meet your specific needs.
Full control over all configurations. Use when predefined modes don't meet your specific needs.
Predefined Modes Table
| Mode | Block | Length | Character Set | Entropy (bits) | Security Level |
|---|---|---|---|---|---|
| 11 | II | 15 | All (no ambiguous) | 95.10 | Strong |
| 13, 14 | II | 20 | Lowercase/Uppercase + Digits | 99.08 | Strong |
| 1-10 | I | 24 | Varies by mode | 124-151 | Very Strong |
| 15-20 | II | 24-128 | All (no ambiguous) | 152-811 | Extremely Strong |
| Custom | III | 15-128 | Configurable | 97-833 | Variable |
💻 Python Code
EntroPy Password Generator Implementation - Block III (Custom)
# Example usage of Block III - Custom Mode
# Command: python3 entropy_password_generator.py --block 3 --length 72 --uppercase --lowercase --numbers --symbols --avoid-ambiguous
import secrets
import string
import argparse
import math
def generate_custom_password(length, uppercase=True, lowercase=True, numbers=True, symbols=True, avoid_ambiguous=True):
# Define character sets
uppercase_chars = string.ascii_uppercase
lowercase_chars = string.ascii_lowercase
number_chars = string.digits
symbol_chars = string.punctuation
# Remove ambiguous characters if requested
if avoid_ambiguous:
ambiguous_chars = "Il1O0|`"
uppercase_chars = ''.join(c for c in uppercase_chars if c not in ambiguous_chars)
lowercase_chars = ''.join(c for c in lowercase_chars if c not in ambiguous_chars)
number_chars = ''.join(c for c in number_chars if c not in ambiguous_chars)
symbol_chars = ''.join(c for c in symbol_chars if c not in ambiguous_chars)
# Build the character pool based on selected options
char_pool = ""
if uppercase:
char_pool += uppercase_chars
if lowercase:
char_pool += lowercase_chars
if numbers:
char_pool += number_chars
if symbols:
char_pool += symbol_chars
# Ensure at least one character type is selected
if not char_pool:
raise ValueError("At least one character type must be selected")
# Generate the password
password = ''.join(secrets.choice(char_pool) for _ in range(length))
# Calculate entropy
entropy = math.log2(len(char_pool)) * length
return password, entropy
# Example usage
password, entropy = generate_custom_password(
length=72,
uppercase=True,
lowercase=True,
numbers=True,
symbols=True,
avoid_ambiguous=True
)
print(f"Generated Password: {password}")
print(f"Password Length: {len(password)}")
print(f"Entropy: {entropy:.2f} bits")