Estoy haciendo un servicio de autenticación, así que he estado buscando algunas buenas implementaciones de Java / Groovy de hashing de contraseñas y sal. He encontrado este artículo en crackstation junto con un ejemplo de código y decidí hacerlo mío. Lo primero que noté es SHA1 y solo 1000 iteraciones, así que las cambié a SHA256 y 90510 (todavía tengo que probar el rendimiento en el servidor y tal vez aumentarlo a al menos 100k).
Sin embargo, una cosa me impresionó. La cadena de resultados es "[iteraciones]: [sal como hexadecimal]: [hash como hexadecimal]". ¿Por qué se agregan iteraciones al resultado? ¿No sería eso inseguro? ¿No sería eso como regalar un pedazo de la llave? O soy demasiado paranoico.
Lo he eliminado, pero me pregunto por qué está allí. ¿Cuál es el propósito de mostrar eso? En caso de que el número predeterminado de iteraciones cambie? ¿Debería el número de iteraciones ser aleatorizado a un grado?