Obtienes diferentes valores porque se usan diferentes sales. La sal es el segundo campo en la contraseña con hash.
Existen grandes tablas de arco iris que hacen que la búsqueda de hashes de contraseñas comunes sea muy barata. El punto de sal es aumentar dramáticamente el costo de calcular previamente los hashes para todas las contraseñas de uso común. Así que la sal básicamente hace que una contraseña sea poco común. Es decir, hace que una contraseña sea tan larga y aleatoria que no sea factible precalcular el hash para todas las contraseñas comunes para todas las sales posibles .
Dado que el objetivo de Salt es prevenir los ataques exitosos de precálculo, no es necesario que sea un secreto, solo debe ser largo y aleatorio. Esto permite que la sal se almacene en texto sin cifrar junto con cada contraseña hash. Esto es afortunado ya que se necesita el salt para validar la contraseña cuando el usuario se autentica.
Un ejemplo de una implementación incorrecta de salt sería usar un solo byte. En ese escenario, un atacante podría precalcular todos los hashes para contraseñas comunes para las 256 sales posibles. Eso es caro pero no lo suficientemente caro. Esa sal no es lo suficientemente grande.
Otro ejemplo de mis-salating es usar el mismo sal en cada contraseña. Eso permite a un atacante precalcular una sola tabla que contiene los hashes de todas las contraseñas comunes para esa única sal. Esto sería caro pero mucho más barato que tener que crear una tabla para cada contraseña. Es por eso que cada hash de contraseña tiene su propia sal.
Editar: La aplicación de sal no reduce el costo de forzar una contraseña única. Salting solo te obliga a usar contraseñas de fuerza bruta en lugar de precomputar sus hashes. Usted protege contra el uso de fuerza bruta mediante una función hash lenta y la llama muchas veces en una salida sucesiva de sí misma. Por ejemplo, ejecutar bcrypt (que está diseñado para ser lento incluso con una GPU u otro hardware especializado) 1024 veces. Mientras PHP almacena el número de iteraciones en el campo de contraseña , en Linux, el número de iteraciones se configura con la opción PAM 'rounds' . Varios usuarios aquí dicen que el valor predeterminado para su instalación de Debian Linux es de 1000 iteraciones para SHA-512.
Por supuesto, ninguna respuesta sobre contraseñas está completa sin una referencia a esta respuesta , una explicación detallada sobre el Estado del arte para el almacenamiento de contraseñas.