miclave/users/password_utils.py

31 lines
987 B
Python

import random
import string
from passlib.pwd import genword
def load_wordlist(filepath):
"""Loads the word list from a file."""
with open(filepath, 'r') as file:
words = file.read().splitlines()
return words
def generate_random_password(length=12):
"""Generates a random password using passlib."""
return genword(length=length)
def generate_pronounceable_password(length=12):
"""Generates a pronounceable password."""
vowels = 'aeiou'
consonants = ''.join(set(string.ascii_lowercase) - set(vowels))
password = []
for _ in range(length // 2):
password.append(random.choice(consonants))
password.append(random.choice(vowels))
return ''.join(password)
def generate_passphrase(num_words=4, filepath='wordlist.txt'):
"""Generates a passphrase using words from an external file."""
wordlist = load_wordlist(filepath)
password = '-'.join(random.choice(wordlist) for _ in range(num_words))
return password