Como muchos sabrán, el cifrado unidireccional es una forma práctica de cifrar las contraseñas de los usuarios en las bases de datos. De esta forma, incluso el administrador de la base de datos no puede conocer la contraseña de un usuario, pero tendrá que tomar una contraseña, cifrarla con el mismo algoritmo y luego comparar el resultado con la contraseña cifrada en la base de datos. Esto significa que el proceso de descifrar la contraseña requiere cantidades masivas de conjeturas y mucho poder de procesamiento.¿Cuál es actualmente el algoritmo de encriptación unidireccional más seguro?
Al ver que las computadoras se vuelven cada vez más rápidas y que los matemáticos todavía están desarrollando estos algoritmos, me pregunto cuál es el más seguro teniendo en cuenta la potencia informática moderna y las técnicas de encriptación.
He estado usando MD5 casi exclusivamente desde hace años, y me pregunto si hay algo más que debería estar haciendo. ¿Debo estar contemplando un algoritmo diferente?
Otra pregunta relacionada: ¿Cuánto tiempo debería ser un campo típicamente para una contraseña tan encriptada? Debo admitir que no sé prácticamente nada sobre el cifrado, pero supongo que un hash MD5 (como ejemplo) puede ser más largo y, presumiblemente, necesitaría más potencia de procesamiento para descifrar. ¿O la longitud del campo no importa en absoluto, siempre que la contraseña encriptada encaje en ella en primer lugar?
Las funciones hash no son funciones de cifrado. Las funciones de cifrado tienen funciones inversas para descifrar un valor encriptado para obtener el valor original. Pero los hash no se pueden descifrar. Solo es posible encontrar colisiones (valores de entrada que dan como resultado el mismo valor hash). – Gumbo
La salida de cualquier función/algoritmo hash dada siempre tiene la misma longitud. Para MD5 siempre es de 128 bits, independientemente de la longitud de los bits de entrada/bytes/cadena. –
No se preocupe por la longitud del campo. En casi todos los casos, adivinar contraseñas y mezclarlos será mucho más rápido que forzar una colisión bruta, y 128 bits es lo suficientemente grande como para resistir ataques de fuerza bruta hasta la muerte por calor del Universo. –