Estoy trabajando en una herramienta de cifrado de archivos simple.
Básicamente, así es como funciona mi programa:
password = get_user_typed_password()
salt = uuid4()
key = bcrypt(password + salt)
cipher = AES(key)
for block in input_file:
output_file.write(AES.encrypt(block))
Mi pregunta es sobre "¿cómo podría hacer que una contraseña posiblemente corta y débil sea larga y segura?".
Pensé que podría usar una concatenación de sha512 hash, así:
for i from 1 to 1000:
password += sha512(password).digest()
Al final, obtendría una contraseña larga de 64000 con caracteres 'ANSII altos' como estos: ☼ ¢ ♣ ¥ ↕ ▼ ║ÅÕ¼ ■ ♫.
¿Crees que es una buena idea estirar la contraseña dada de esta manera? Recuerde que no se almacenará en una base de datos.
Sé que inventar tu propio mecanismo es malo, pero aquí, solo para hacer que la contraseña sea más larga / segura ... la clave final será clave = bcrypt (long_password + salt) de todos modos.
Con esa pregunta, quería preguntar una que no encontré aquí: "La concatenación de hash es mala para generar una clave ... pero ¿qué pasa con la extensión de la contraseña?"
¡Gracias de antemano por sus respuestas, explicaciones y críticas (soy un novato en criptografía)!