¿El tiempo de ejecución para bcrypt es independiente de la longitud de la cadena de entrada?

6

¿El tiempo de ejecución de bcrypt es independiente de la longitud de la cadena de entrada?

es decir,

En caso de que el tiempo de ejecución de

bcrypt.hashpw('input_string', bcrypt.gensalt(12))

y

bcrypt.hashpw('arbitrarily_longer_input_string', bcrypt.gensalt(12))

sea en teoría lo mismo.

¿Es esto algo que está garantizado por el algoritmo bcrypt, o es específico de la implementación?

    
pregunta mmcnickle 02.05.2013 - 16:33
fuente

1 respuesta

7

El tiempo de ejecución en bcrypt no depende del tamaño de la entrada; internamente, la cadena de entrada se rellena en una secuencia de bytes longitud fija , y esa secuencia se utiliza en todo el algoritmo.

Sería un problema si el tiempo de ejecución dependiera del tamaño de la entrada, porque el parámetro "factor de costo" se ajusta para hacer que el tiempo de ejecución sea tan alto como sea tolerable. La pregunta es relevante, pero, afortunadamente, bcrypt no tiene esta debilidad específica.

Nota: las contraseñas de entrada para bcrypt tienen un tamaño máximo de unas pocas docenas de bytes. Hay maneras de evitarlo / a > lo que implica un paso de pre-hashing (ese paso tomaría un tiempo proporcional al tamaño de la contraseña, pero sería mucho más rápido por lo que la sobrecarga de tiempo sería insignificante, a menos que tenga la costumbre de escribir contraseñas de varios megabytes , que es impresionante pero extraño).

    
respondido por el Tom Leek 02.05.2013 - 16:55
fuente

Lea otras preguntas en las etiquetas