se debe utilizar un nombre de usuario de hash, la contraseña y la sal, como:
hash(length(username)+"_veryuniquesalt4rtLMAO"+username+password)
De esta manera, la base de datos no es vulnerable a las tablas del arco iris existentes, debido a la sal, y con el nombre de usuario hash junto con la contraseña también es imposible crear una tabla de arcoíris para su método hash específico.
El uso de un algoritmo hash "lento" protegerá mejor las contraseñas, al igual que si fueran más complejas, pero es una compensación, una vez que ha decidido un cierto nivel de lentitud no puede escalar cuando necesita el rendimiento para otras cosas.
También es posible hacer el hashing lento del lado del cliente usando JavaScript, de esa manera no va a ser un problema de rendimiento, pero el método por supuesto requerirá que JavaScript esté habilitado.
No importa lo que elija, un poco de slowhashing es mucho mejor que nada, use 1 milisegundo en lugar de 1 microsegundo y su protección es 1000 veces más fuerte.
Puede usar bcrypt, o puede hacer que un algoritmo de hash convencional haga mucho trabajo adicional, solo asegúrese de que el trabajo adicional no sea principalmente concatenación de cadenas.
Al final, mejor no obtener su base de datos robada, muchas contraseñas son tan débiles que se extraen fácilmente sin importar lo que haga.
Gracias Martin, entiendo que. Era una pregunta limitada y merecía una respuesta estrecha. – Hissohathair