Aquí hay una función que maximiza la seguridad (ver (2)) sin dejar de ser súper simple:
def encrypt_decrypt(password): enc_str = 'h213j2kh3kj213h41k' return "".join([chr(ord(a) ^ ord(b)) for a,b in zip(password,enc_str)])
El único requisito es que enc_str
sea más largo que la contraseña que va a utilizar. Probémoslo:
>>> encrypt_decrypt('12abc') 'Y\x00PQ\t'
Regresar usa la misma función:
- ¿No podrían los sitios web aumentar exponencialmente la seguridad al limitar la cantidad de contraseñas por minuto?
- ¿Cuáles son algunas mejoras que TLS realizó sobre SSL?
- ¿Por qué la NSA no puede descifrar el cifrado de Apple?
- ¿Quién se asegura de que los códigos de misiles nucleares no sean pirateados?
- ¿Se puede hackear el "arma inteligente" alemana?
>>> encrypt_decrypt('Y\x00PQ\t') '12abc'
Algunos comentarios
(1) Por supuesto, si alguien obtiene acceso a su código fuente, puede averiguar inmediatamente su contraseña, pero esto se aplica a todas las sugerencias.
(2) ¿Qué quiero decir con maximizar la seguridad? Con esto quiero decir que la única forma de recuperar su contraseña es forzarla por fuerza bruta o encontrar el código fuente. Se ha perdido toda la información que llevaba su contraseña (la entropía está maximizada). Esto se conoce como cifrado perfecto. Esto solo es posible si su clave de cifrado es al menos tan larga como la que está cifrando. ¡Sin embargo, todo esto depende de que enc_str
sea aleatorio! No solo pongas 'aaaaaaaaaaaa'
. Vea el comentario de Anders Kaseorgs para una descripción más precisa.
(3) ¿Cómo funciona? Es un simple bit a bit exclusivo o. Convierte su contraseña y la cadena de cifrado en bits (10001101010 …) y hace XOR bit a bit en ellos.