Almacenar de forma segura las contraseñas para su uso en el script de Python

Posible duplicado:
Necesito almacenar de forma segura un nombre de usuario y una contraseña en Python, ¿cuáles son mis opciones?

Estoy buscando una forma de almacenar de forma segura las contraseñas que pretendo usar en algunos scripts de Python. Iniciaré sesión en diferentes cosas y no quiero almacenar las contraseñas como texto sin formato en el script mismo.

En su lugar, me preguntaba si hay algo que pueda almacenar esas contraseñas de forma segura y luego recuperarlas utilizando algo como una contraseña maestra que podría ingresar al script al principio.

Conozca la llave maestra usted mismo. No lo codifiques.

Use py-bcrypt (bcrypt), una poderosa técnica de hashing para generar una contraseña usted mismo.

Básicamente puedes hacer esto (una idea …)

 import bcrypt from getpass import getpass master_secret_key = getpass('tell me the master secret key you are going to use') salt = bcrypt.gensalt() combo_password = raw_password + salt + master_secret_key hashed_password = bcrypt.hashpw(combo_password, salt) 

guarde el salt y la contraseña con hash en algún lugar, así que siempre que necesite usar la contraseña, está leyendo la contraseña encriptada y verifique la contraseña sin procesar que ingresa nuevamente.

Esto es básicamente cómo debería funcionar el inicio de sesión en estos días.

Normalmente tengo un secrets.py que se almacena por separado de mis otros scripts de Python y no está bajo el control de versiones. Luego, cuando sea necesario, puede hacer from secrets import . De esta manera, puede confiar en el sistema de seguridad de archivos incorporado en los sistemas operativos sin reinventar el suyo.

El uso de la encoding / deencoding Base64 también es otra forma de ofuscar la contraseña aunque no sea completamente segura

Más aquí: ocultar una contraseña en una secuencia de comandos de python (solo ofuscación insegura)

la forma segura es cifrar sus datos confidenciales mediante AES y la clave de cifrado es derivada por la función de derivación de clave basada en contraseña (PBE), la contraseña maestra utilizada para cifrar / descifrar la clave de cifrado para AES.

contraseña maestra -> clave segura -> cifrar datos por la clave

Puedes usar pbkdf2

 from PBKDF2 import PBKDF2 from Crypto.Cipher import AES import os salt = os.urandom(8) # 64-bit salt key = PBKDF2("This passphrase is a secret.", salt).read(32) # 256-bit key iv = os.urandom(16) # 128-bit IV cipher = AES.new(key, AES.MODE_CBC, iv) 

asegúrese de almacenar la frase de contraseña / iv / salt, y descifre utilizando la misma fase de sal / iv / salt

Weblogic utilizó un enfoque similar para proteger contraseñas en archivos de configuración