Cómo calcular un resumen SHA
Selecciona texto o archivo, algoritmo y codificación. El texto se convierte a UTF-8. En modo archivo se leen los bytes exactos y se pasan a SubtleCrypto.digest.
- Elige Texto o Archivo; un archivo no se decodifica como texto.
- Usa SHA-256 como opción moderna común o el algoritmo exacto exigido por el protocolo.
- Elige Hex para checksums habituales o Base64 si el sistema lo espera.
- Compara el resumen completo con una fuente fiable; una coincidencia no autentica por sí sola al publicador.
Ejemplos y comportamiento esperado
| Entrada | Salida | Notas |
|---|---|---|
| abc con SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d | Vector conocido, solo para compatibilidad. |
| abc con SHA-256 | ba7816bf8f01cfea414140de5dae2223… | 256 bits equivalen a 64 caracteres hexadecimales. |
| abc con SHA-384 | cb00753f45a35e8bb5a03d699ac6500… | 384 bits equivalen a 96 caracteres hexadecimales. |
| abc con SHA-512 | ddaf35a193617abacc417349ae204131… | 512 bits equivalen a 128 caracteres hexadecimales. |
| Hola 👋 en UTF-8 | Resumen determinista | Se calcula el hash de bytes UTF-8, no de unidades UTF-16. |
| Archivo local | Resumen de los bytes exactos | Un byte o metadato interno diferente cambia el resultado. |
Funciones hash y determinismo
Una función hash criptográfica convierte cualquier longitud en un resumen fijo. La misma secuencia de bytes da el mismo resultado y un cambio pequeño debería alterar ampliamente el resumen. No es una codificación reversible.
El determinismo sirve para integridad, contenido, caché y builds. También permite adivinar secretos de baja entropía comparando candidatos; las contraseñas requieren funciones lentas y con sal, no SHA general.
- SHA-256 produce 32 bytes.
- Hex usa dos caracteres por byte.
- Base64 representa los mismos bytes de forma más compacta.
Elección de algoritmo y SHA-1
SHA-256, 384 y 512 pertenecen a SHA-2. Usa el algoritmo indicado por la fuente o el protocolo; no son intercambiables. Una salida más larga no corrige un protocolo mal diseñado.
SHA-1 permanece por sistemas antiguos. Las colisiones prácticas lo hacen inadecuado para nuevas firmas, certificados o distribución adversarial. Migra a SHA-256 o una construcción aprobada.
- No uses SHA-1 contra atacantes capaces.
- No adivines solo por longitud.
- HMAC es una construcción distinta con clave.
Codificación de texto y bytes de archivo
TextEncoder usa UTF-8 sin normalizar. Unicode, caracteres invisibles, espacios finales y CRLF/LF pueden cambiar los bytes aunque el texto se vea igual. Otros sistemas con UTF-16 o páginas de códigos producirán otro resumen.
File.arrayBuffer entrega el contenido exacto. Nombre, MIME y fecha no se incluyen salvo que estén dentro del archivo. Guardar de nuevo una imagen o documento puede cambiar metadatos internos.
- Conserva saltos finales.
- Compara tamaño al diagnosticar.
- Documenta codificación y normalización.
Integridad y confianza
Una coincidencia indica que los bytes probablemente son iguales, pero no quién los creó. Si un atacante reemplaza archivo y checksum, un hash plano no ofrece autenticidad.
Obtén el valor esperado mediante manifiestos firmados, metadatos fiables o un canal autenticado. Usa HMAC para secretos compartidos y firmas digitales para autenticidad pública.
- Compara el resumen completo.
- Usa una comparación en tiempo constante en código sensible.
- Guarda algoritmo junto al valor.
Usos y diagnóstico
Sirve para descargas, comparar exportaciones, registrar artefactos, claves de caché y vectores. El modo local evita subir archivos y el texto ayuda con problemas de canonicalización.
Para reproducir, registra entrada, algoritmo, codificación y normalización. Ante una diferencia revisa longitud, saltos, Unicode, compresión y metadatos antes de culpar al algoritmo.
- Verificar checksums fiables.
- Comparar archivos locales.
- Probar vectores conocidos.
- Diagnosticar UTF-8 frente a otras codificaciones.
Límites y no objetivos
Se requiere Web Crypto; si falta, falla. El archivo se carga completo en memoria, por lo que archivos enormes necesitan herramientas nativas en streaming.
No descifra hashes, no cifra, no firma, no almacena contraseñas y no consulta reputación de malware. Produce únicamente el resumen seleccionado.
- No se lee ningún archivo hasta seleccionarlo.
- Limpiar no borra cachés del sistema.
- Usa Argon2, scrypt o bcrypt para contraseñas.
Diferencias con HMAC y UUID
Un hash no tiene clave y cualquiera puede reproducirlo. HMAC añade un secreto para autenticidad. UUID v4 identifica aleatoriamente y no depende del contenido.
Usa hash para checksum, HMAC para autenticación compartida, firma para verificación pública y UUID para identificadores.