Curso-lenguaje-python/catch-all/01_scripts_words_linux/random_pass.py

54 lines
1.6 KiB
Python
Raw Permalink Normal View History

"""
Random Password Generator
=========================
Genera una contraseña aleatoria con el número
de palabras que indiques a partir de un archivo
de palabras de Linux ubicado en la mayoría
de las distribuciones en /usr/share/dict/words
Despues, pregunta al usuario si desea mezclar
las letras de la contraseña generada.
"""
import random
# Ruta al archivo de palabras en Linux (puede variar según la distribución)
word_file = '/usr/share/dict/words'
# Función para generar una contraseña aleatoria
def generate_password(word_file, num_words):
with open(word_file, 'r') as file:
words = [line.strip() for line in file.readlines()]
# Seleccionar un número de palabras al azar
password_words = random.sample(words, num_words)
# Combinar las palabras para formar la contraseña
password = ''.join(password_words)
return password
# Función para mezclar las letras de una cadena
def shuffle_letters(input_string):
letters = list(input_string)
random.shuffle(letters)
return ''.join(letters)
# Preguntar al usuario cuántas palabras desea en la contraseña
num_words = int(input("Número de palabras para la contraseña: "))
# Generar una contraseña aleatoria con el número de palabras especificado
random_password = generate_password(word_file, num_words)
print("Contraseña aleatoria generada:", random_password)
# Preguntar al usuario si desea mezclar las letras
mezclar_letras = input(
"¿Desea mezclar las letras de la contraseña? (s/n): ").lower()
if mezclar_letras == 's':
random_password = shuffle_letters(random_password)
print("Contraseña con letras mezcladas:", random_password)