¿Tipo de campo de base de datos para el almacenamiento de contraseñas?

3

En el pasado usé varchar(255) para almacenar contraseñas con hash (sin sal). ¿Es esto suficiente? ¿O se requieren campos más largos?

    
pregunta powtac 06.06.2012 - 20:17
fuente

3 respuestas

2

El tamaño del campo en la base de datos debe coincidir exactamente con el tamaño de la salida de su función de derivación de clave. Por lo tanto, si la salida tiene 60 caracteres , use varchar(60) (o tal vez char(60) si es más pequeño o más rápido en su base de datos) .

Y, por favor, no solo pegue la contraseña y llámela un día. Hazlo bien .

    
respondido por el Brendan Long 07.06.2012 - 04:08
fuente
1

Un campo de base de datos más largo o un tipo diferente no representa una diferencia para la seguridad, si esa es tu pregunta.

Debes elegir una longitud de campo que sea lo suficientemente larga como para contener la longitud de bits completa del hash resultante. Esto es solo para la sobrecarga de almacenamiento y el rendimiento mínimos. (Vea esto como una guía enlace )

Un algoritmo hash devolverá exactamente la misma cantidad de datos (es la longitud de bits) independientemente de la cantidad de datos que se le ingresen.

es decir, (contraseña o contraseña + sal o 100 líneas de texto) el hash devolverá exactamente la misma cantidad de bits después de aplicar el mismo algoritmo.

Para aumentar la seguridad, necesitaría cambiar la forma en que manejó el hashing, la recolección y el almacenamiento de sal (si lo hace) como ya se ha mencionado.

    
respondido por el Bernie White 07.06.2012 - 09:55
fuente
0

Cualquiera sea la entrada que use, el hashing siempre produce un resultado con la misma longitud. Además, la salada no afecta la longitud del hash, ya que debe agregar sal antes de aplicar la función de hashing: hash(password+salt) . No es necesario utilizar campos de base de datos más largos que la longitud de la salida de hashing.

Lo que es más, iterar la función hash no afecta la longitud: length(hash(hash(input))) == length(hash(input))

    
respondido por el p____h 07.06.2012 - 10:27
fuente

Lea otras preguntas en las etiquetas