1

Crea tu propio administrador de contraseñas

¿Alguna vez te ha pasado que no puedes recordar la contraseña de alguno de los servicios que usas? Sin duda es una sensación incómoda, pero te tengo buenas noticias. ¡Jamás tendrás que preocuparte por esto de nuevo!

Así es, ya no tendrás que preocuparte por generar contraseñas seguras ni por recordarlas. Aquí aprenderás a crear un administrador de contraseñas con Python, pero vayamos paso a paso.

¿Cómo funciona?

Primero debes entender qué es lo que hará el administrador. El programa contará con dos comandos principales: generar contraseña y obtener contraseña. Ambos harán exactamente lo que dice su nombre. Con el primero, deberás crear una contraseña nueva. Con el segundo, obtendrás una contraseña ya existente.

Pero, ¿cómo lograremos generar contraseñas seguras? Bueno, la respuesta es con funciones hash, específicamente, con la función SHA-256. Lo sé, parece que se trata de algo complicado, la realidad es que no lo es y su implementación en Python es bastante fácil 😁.

SHA-256 nos permite generar una huella digital de cualquier información. Esta función recibe como input un string de cualquier longitud y regresa siempre una cadena de 64 caracteres en sistema hexadecimal. El resultado del output depende totalmente del input, es decir, si alguien más quisiera obtener el mismo resultado que tú, tendría que ingresar exactamente el mismo input.

En el caso de nuestro administrador el input que daremos será una combinación del nombre del servicio al que pertenece la contraseña y una llave maestra que solo tú sabrás. Por lo cual, mientras nadie conozca tu llave maestra nadie podrá descubrir tus contraseñas. Dejarás de lidiar con el manejo de decenas de contraseñas. Solo debes recordar tu llave maestra.

Ahora sí, lo que has estado esperando. ¡Vamos al código! 💪

Los comandos

Lo primero que haremos será importar la librería que necesitamos. La única que requerimos para este programa es hashlib, esta nos permitirá usar la función SHA-256. Lo mejor es que no debes instalarla, está incluida en la instalación de Python. Para importarla solo debes hacer la siguiente sentencia.

from hashlib import sha256

Como te mencione antes, el programa tendrá dos comandos principales, estos los implementaremos como funciones. Ambas tendrán una estructura y funcionamiento similar.

defget_password(master_key, service):
    return create_password(service, master_key)

defadd_password(service, master_key):
    return create_password(service, master_key)

Puedes notar que ambas reciben dos parámetros: master_key y service. De igual forma ambas llaman a la función create_password. Veamos que hace esta función.

defcreate_password(service, master_key):
    return sha256(master_key.encode('utf-8') + service.lower().encode('utf-8')).hexdigest()[:10]

Esta función es la responsable de crear y obtener nuestras contraseñas. Lo que hace es llamar a la función sha256 pasando como input la llave maestra y el nombre del servicio. Es importante notar que service es transformado a minúsculas, pero master_key no. Recuerda, entonces, que tu llave maestra distingue mayúsculas y minúsculas. Finalmente hacemos slicing para quedarnos solo con los primeros 10 caracteres, dado que esta es una longitud aceptada por la mayoría de las plataformas.

¡Genial! Ya tenemos todas nuestras funciones 🥳. Es momento de implementar la lógica de nuestro programa.

La lógica del programa

El modo en que funcionará nuestro programa es bastante sencillo de implementar. Primero debemos asegurarnos de que el usuario será capaz de utilizarlo. Para esto haremos una serie de prints que le mostrarán al usuario los comandos disponibles.

print("\n¡Bienvenido! ¿Qué deseas hacer?\n")print("\n"+ "*"*15)print("Comandos:")print("s = salir del programa")print("oc = obtener contraseña")print("gc = generar contraseña")print("*"*15)

Puedes ver que abreviamos los comandos a 1 o 2 letras para facilitar el uso del administrador. También debes haber notado que hay un comando del que no te había hablado: salir del programa. No te preocupes, enseguida veremos cómo se implementa.

Hemos llegado a la parte final de nuestro administrador. Debemos programar la forma en que el usuario va a interactuar con él. Queremos que nuestro administrador esté en constante espera de un comando, esto se puede conseguir con un ciclo while. Una vez dentro del ciclo el administrador recibirá un comando.

  • Si el comando es salir del programa, simplemente salimos del ciclo con la instrucción break.
  • Si el comando es generar contraseña, le pedimos al usuario su llave maestra y el nombre del servicio y los pasamos como argumentos a la función add_password().
  • Si el comando es obtener contraseña, le pedimos al usuario su llave maestra y el nombre del servicio y los pasamos como argumentos a la función get_password().

Ya tenemos claro cómo va a funcionar el programa. Lo único que falta es escribir el código.

whileTrue:
    input_ = input(":")

    if input_ == "s":
        breakif input_ == "gc":
        master_key = input("\n¿Cuál es tu llave maestra?\n")
        service = input("\n¿Cuál es el nombre del servicio?\n")
        print("\n" + "La contraseña creada para " + service.capitalize() + " es:\n" + add_password(service, master_key))
    if input_ == "oc":
        master_key = input("\n¿Cuál es tu llave maestra?\n")
        service = input("\n¿Cuál es el nombre del servicio?\n")
        print("\n" + "Tu contraseña de " + service.capitalize() + " es:\n" + get_password(master_key, service))

Hemos escrito todo el código que necesitamos. Es momento de unir todas las partes y verlo funcionar. En la siguiente imagen puedes ver que guarde el código que hicimos en un archivo llamado main.py.

Y en el siguiente video puedes ver el programa en funcionamiento. En este caso utilicé como llave maestra “miLlaveMaestra” y como servicio “Platzi”. En tu caso, asegúrate de tener una llave maestra más segura que la mía 😅.

¡Listo! Ya tienes tu propio administrador de contraseñas y un proyecto más para tu portafolio 😉.

Recuerda que para mejorar tus habilidades en programación debes practicar muchísimo, así que te tengo un reto 😁. Tu misión será llevar nuestro administrador al siguiente nivel. Tendrás que hacer lo siguiente: conectar el script de este tutorial con una base de datos para poder almacenar diferentes usuarios y sus correspondientes llaves maestras, servicios y contraseñas. ¿Te animas a intentarlo? Cuéntame en los comentarios cómo lo lograste.

Te dejo algunos cursos que te ayudarán a cumplir el reto 💪.

Y ya sabes, ¡Nunca Pares de Aprender!

Escribe tu comentario
+ 2
2
8840Puntos

hola me parece genial tu tutorial! pero el video que mencionas no aparece, no esta insertado, ojala pudieras colocarlo.

de antemano gracias!