Qué es un hash y para qué sirve
Una función hash toma un dato de cualquier tamaño y devuelve una huella de tamaño fijo: 32 caracteres hexadecimales en MD5, 64 en SHA-256. Tiene tres propiedades que la hacen útil: el mismo dato da siempre la misma huella, un cambio mínimo en el dato cambia la huella entera, y de la huella no se puede reconstruir el dato. Con eso se comprueba que una descarga llegó intacta, se guardan contraseñas sin guardar la contraseña, y se firma un documento firmando solo su huella.
Lo que un hash no es: un cifrado. No hay clave ni forma de dar marcha atrás. Lo que sí se puede hacer es probar candidatos —millones por segundo— hasta dar con uno que produzca esa huella, y por eso las contraseñas se guardan con sal y con funciones lentas a propósito, no con un MD5 a secas.
MD5, SHA-1 y SHA-2, uno a uno
MD5 (1992) da 128 bits. Se conocen colisiones desde 2004 —dos entradas distintas con la misma huella— y hoy se fabrican en segundos, así que no sirve para firmar ni para contraseñas. Sigue siendo útil para detectar corrupción accidental en una descarga, que es para lo que la mayoría de la gente lo busca.
SHA-1 (1995) da 160 bits. Corrió la misma suerte en 2017, cuando se publicó la primera colisión práctica; los navegadores dejaron de aceptar certificados firmados con él ese mismo año. SHA-256, SHA-384 y SHA-512 son la familia SHA-2 (2001), sin ataques prácticos conocidos, y son lo que se usa hoy: SHA-256 en casi todo, SHA-512 donde el procesador es de 64 bits y los datos grandes, porque ahí es más rápido.
Cómo comprobar una descarga
Quien publica un archivo grande —una imagen de sistema, un instalador— suele publicar al
lado su hash. Después de descargar, se calcula el hash del archivo recibido y se compara
con el publicado: si coinciden, el archivo es idéntico bit a bit; si no, algo cambió por el
camino, sea un corte de red o algo peor. Esta página calcula el hash de un texto; para un
archivo, en Windows es certutil -hashfile archivo SHA256, en macOS
shasum -a 256 archivo y en Linux sha256sum archivo.
El campo «comparar con» hace esa comprobación por ti: pega el hash publicado y la página dice si coincide con alguno de los cinco, sin que tengas que leer sesenta y cuatro caracteres a ojo. Las mayúsculas no importan; los espacios, tampoco.
Lo que conviene saber
El hash se calcula sobre bytes, no sobre caracteres, y el mismo texto puede tener
bytes distintos según la codificación: «España» son siete bytes en UTF-8 y seis en
Latin-1, con dos hashes que no se parecen en nada. Esta página usa UTF-8, que es lo que usa
casi todo hoy; si un hash publicado no coincide con el tuyo y el texto lleva acentos, la
codificación es lo primero que hay que mirar. Y un salto de línea al final también cuenta:
echo lo añade, y es el motivo más frecuente de que un hash calculado en la
terminal no coincida con el de aquí.
Todo se calcula en tu navegador con la API criptográfica que trae —MD5 no está en ella y va escrito a mano, con los vectores de prueba del estándar comprobados—. No se envía nada a ningún sitio.