Qué hace esta herramienta
Calcula cinco hashes a la vez sobre el mismo dato — MD5, SHA-1, SHA-256, SHA-384 y SHA-512 — para que veas todos los digest sin cambiar de pestaña. Funciona con texto pegado o con archivos hasta 256 MB; en ambos modos el cálculo es local.
El modo texto codifica primero la cadena como UTF-8 y luego hashea los bytes — coincide con echo -n | shasum (sin nueva línea final). El modo archivo lee el archivo en streaming desde el navegador y produce el digest sin retenerlo entero en memoria, así que un archivo grande no tumba la pestaña.
Cuándo la usarías
- Verificar la integridad de un archivo descargado contra su suma publicada.
- Calcular el SHA-256 de un certificado o binario para anclar un hash en una nota.
- Comparar versiones de un archivo: si los hashes son distintos, los archivos son distintos.
- Hashing rápido durante depuración — confirmar que dos sistemas reciben exactamente los mismos bytes.
Cómo funciona
MD5 va por una implementación local en JavaScript (crypto.subtle no expone MD5 por motivos de seguridad). SHA-1, SHA-256, SHA-384 y SHA-512 usan crypto.subtle.digest directamente, que está implementado nativamente y es muy rápido.
Para archivos, leemos por chunks (Blob.slice + crypto.subtle.digest por chunk no es viable porque digest no es incremental, así que streameamos el archivo en buffers grandes y usamos un único digest). En la práctica esto significa que un archivo de 256 MB tarda unos segundos según el navegador.
Ni un byte sale del dispositivo. Para el modo archivo, ni siquiera el nombre del archivo: solo se lee localmente con la API File.
Notas
¿Por qué MD5 sigue aquí si es inseguro? Porque sigue siendo útil para ETags HTTP, sumas de comprobación informales y compatibilidad con sistemas heredados. Te avisamos arriba cuando se trata de integridad sensible a seguridad.
¿Y SHA-1? Igual: deprecated para uso con seguridad pero todavía omnipresente en git, certificados antiguos y CI viejo.
¿Por qué no SHA-3? No vemos demanda real en este nicho. Si tienes un caso, abre un issue.
¿Coincide con shasum? Sí, siempre que no haya un \n final. echo "hola" añade un salto de línea; echo -n "hola" no.