Algoritmos hash populares incluyen:
MD5 (obsoleto para uso de seguridad)
SHA-1 (obsoleto)
SHA-256, SHA-512 (parte de la familia SHA-2)
SHA-3
bcrypt, scrypt, Argon2 (para hash seguro de contraseñas)
Integridad de los datos: Garantiza que los datos no se hayan alterado (p. ej., sumas de comprobación de archivos).
Almacenamiento de contraseñas: Almacena contraseñas de forma segura mediante la comparación de hashes en lugar de almacenar las contraseñas reales.
Firmas digitales: Se firman hashes en lugar de documentos grandes.
Eficiencia: Los valores hash pequeños y de tamaño fijo se comparan más rápido que los grandes bloques de datos.
Dado que los hashes son deterministas y rápidos, son ideales para tareas de verificación.
Usar una función hash implica:
Ingresar datos (p. ej., un archivo, una cadena o una contraseña).
Procesar los datos con un algoritmo hash.
Obtener un resumen, que es una cadena de tamaño fijo que representa de forma única la entrada.
Para proteger la contraseña:
Combinar la contraseña con una sal (datos aleatorios).
Aplicar una función hash segura (p. ej., bcrypt o Argon2).
Almacenar el hash y la sal resultantes. de forma segura.
Dado que los hashes no se pueden revertir, se verifica la entrada (como una contraseña) aplicando un nuevo hash y comparando el nuevo hash con el almacenado.
El hash se debe usar cuando:
Se debe verificar la integridad de los datos (por ejemplo, para comprobar si hay corrupción o manipulación).
Las contraseñas deben almacenarse de forma segura (no cifradas ni en texto plano).
Se utilizan firmas y certificados digitales (el hash garantiza la autenticidad del documento).
Es necesaria una rápida comparación de datos (por ejemplo, en tablas hash o cachés).
El hash no es adecuado cuando se necesita recuperar datos originales posteriormente; para eso está el cifrado.