En general, no debería hacer esto usted mismo, sino seguir las pautas del sistema que está utilizando.
La forma "correcta" de almacenar contraseñas es con un hash "unidireccional", con "sal" y "fortalecimiento de clave".
El término "unidireccional" significa justamente eso. Una vez que lo hash, nunca puedes recuperar la contraseña tú mismo. No hay forma de recuperar la contraseña. Sin embargo, aún puede verificar si el usuario ha ingresado la contraseña correcta repitiendo el hash en lo que escribió y ver si coincide con el que está almacenado en la base de datos.
Si los hackers roban sus hashes de contraseña, pueden descifrarlos sin conexión.
El crack más común es calcular previamente un número de hashes de millones de contraseñas. Cuando roban hashes de su sitio, los buscan en una tabla y encuentran instantáneamente la contraseña original.
Para anular eso, debes "saltear" la contraseña. Generas un texto aleatorio y hash ese texto con la contraseña. A continuación, almacena ese sal + hash en su base de datos.
Esto obliga a los piratas informáticos a "forzar la fuerza bruta" de sus contraseñas en lugar de usar una "búsqueda de tabla". Los equipos de escritorio de los piratas informáticos pueden calcular 1 billón de hashes por segundo, por lo que rápidamente descubrirán contraseñas pequeñas.
Para vencer eso, simplemente hash repetidamente el valor. Si repite el hash mil veces, el pirata informático ahora solo puede probar un millón por segundo.
Desafortunadamente, cuanto más caro sea para el pirata informático, más caro será hacer las contraseñas de prueba por ti mismo. Repetir el hash 1000 veces es un buen compromiso entre reducir la velocidad del pirata informático e impactar el rendimiento de su servidor.
Otra forma de ralentizar al pirata informático es aplicar reglas a las contraseñas, como exigir que tengan al menos 8 caracteres y que contengan números y símbolos. La mayoría de las contraseñas son palabras, en letras minúsculas. Eso significa que el hacker solo necesita probar 26 combinaciones por letra. Si las contraseñas se componen de mayúsculas y minúsculas, números y símbolos, se convierten en alrededor de 100 combinaciones por letra.
El objetivo de lo anterior es enseñarte todas las complicaciones de cómo los piratas informáticos atacan las contraseñas y las cosas que pasan los administradores para defender esas contraseñas. Por lo general, no tiene que preocuparse por eso: simplemente elige la solución que el sistema subyacente que está utilizando ha elegido para usted.