Actualmente estoy implementando un sistema de inicio de sesión simple. Me gustaría almacenar de forma segura todas las contraseñas de los usuarios en mi base de datos. Las contraseñas son los componentes más importantes. Todos los demás datos de usuario no son importantes. Si una cuenta es hackeada, siempre y cuando la contraseña no pueda resolverse está bien; Otros datos son cosas como: puntuación y fecha de creación de la cuenta.
Supongo que algunos de mis usuarios usarán la misma contraseña que utilizan para otros sitios. Por lo tanto, debo asegurarme de que la contraseña no pueda ser leída por un pirata informático potencial.
¿Puedo generar el Hash en el lado del cliente de alguna manera para evitar que cualquier pirata informático vea la contraseña real?
Antes de que digas, no debería hacerlo en el cliente. El servidor tiene un bucle de juego constante que debe ejecutarse, y no quiero que el juego se retrase cada vez que alguien registre una cuenta o intente iniciar sesión. Este enfoque tomaría parte de la carga del servidor.
EDITAR: Como esta pregunta se cerró, me gustaría explicarlo. Pasar al cliente me permite usar muchas más rondas cuando se utiliza el hash de la contraseña, ya que esto no afectará al servidor ni a la experiencia de otros usuarios de ninguna manera. Esto también hace que sea mucho más fácil evitar que un usuario envíe solicitudes de spam y ralentice el servidor.