Calcular el checksum de un archivo

calcula la suma de verificación (checksum) de un archivo en MD5, SHA-1, SHA-256 o SHA-512. Útil para verificar la integridad de una descarga o detectar una alteración

¿Qué es un checksum?

Un checksum (suma de control, a veces escrita chksum) es una huella digital única calculada a partir del contenido de un fichero por un algoritmo de hash. Esa huella, o fingerprint, suele representarse mediante una cadena hexadecimal de longitud fija.

La propiedad fundamental de un buen algoritmo de hash es el efecto avalancha: cualquier modificación del fichero de origen, aunque sea de un solo bit, produce un checksum radicalmente distinto. Dos ficheros con contenido estrictamente idéntico producen siempre el mismo checksum, independientemente del nombre del fichero, de la fecha de modificación o del sistema operativo.

El checksum sirve principalmente para verificar la integridad de un fichero: si la huella recalculada localmente coincide con la anunciada por el editor, el fichero está intacto. Si no, ha sido alterado, corrompido en tránsito o modificado.

¿Para qué sirve concretamente?

  • Verificar la integridad de una descarga: una ISO Linux (Debian, Ubuntu, Fedora, Arch), una imagen Docker, un instalador Windows o un archivo open source publican sistemáticamente un checksum oficial. Recalcularlo localmente confirma que el fichero está completo y sin alterar.
  • Detectar una corrupción en tránsito: una descarga interrumpida, un sector de disco defectuoso, una RAM inestable, un cable de red caprichoso o una copia a memoria USB pueden corromper octetos. El checksum revela inmediatamente esos errores silenciosos.
  • Huella de firma: confirmar que un fichero proviene realmente del autor esperado cuando el checksum se difunde por un canal seguro (HTTPS, firma GPG). Es el mecanismo en la base de los repositorios de paquetes Linux y de las tiendas de aplicaciones.
  • Versionado y caché: Git identifica cada commit, blob y árbol por un hash SHA-1 (en migración a SHA-256). Los CDN y bundlers web (Webpack, Vite, esbuild) inyectan un hash en el nombre del fichero (app.4a8f2c.js) para invalidar automáticamente la caché del navegador al cambiar.
  • Detección de duplicados y deduplicación: copias de seguridad incrementales (Borg, Restic, rsync), sistemas de ficheros (ZFS) y almacenes de objetos identifican los bloques idénticos por su hash para almacenar una sola copia.
  • Validación de upload: un cliente envía el checksum esperado, el servidor lo recalcula al recibir. AWS S3, por ejemplo, acepta una cabecera Content-MD5 o x-amz-checksum-sha256 para rechazar un upload corrompido.
  • Inteligencia de amenazas y antivirus: VirusTotal y los editores de antivirus indexan los ficheros maliciosos por su hash SHA-256, lo que permite una detección sin transmitir el binario completo.

Algoritmos admitidos y diferencias

  • MD5 (128 bits, 32 caracteres hexadecimales): rápido, ampliamente difundido, pero roto criptográficamente. Las colisiones MD5 son calculables en pocos segundos en hardware corriente desde 2004. Usar solo para verificación de integridad no maliciosa (descarga frente a corte de red, copia local). Proscrito para cualquier función de seguridad, firma o autenticación.
  • SHA-1 (160 bits, 40 caracteres hexadecimales): obsoleto para criptografía desde el ataque SHAttered de 2017, que demostró una colisión real entre dos PDF distintos. Git lo usa todavía por defecto pero migra a SHA-256. No usarlo más para firmar o autenticar.
  • SHA-256 (256 bits, 64 caracteres hexadecimales): estándar moderno, miembro de la familia SHA-2. Base de los certificados TLS modernos, de las firmas de paquetes Linux (apt, dnf, pacman), de Bitcoin y de los controles de integridad oficiales. Más lento que MD5 pero seguro según el estado actual de los conocimientos.
  • SHA-512 (512 bits, 128 caracteres hexadecimales): variante de 64 bits de SHA-2. Manipula palabras de 64 bits de forma nativa, lo que lo hace a veces más rápido que SHA-256 en CPU 64 bits. Huella más larga, margen de seguridad superior.
  • CRC32 (32 bits, 8 caracteres hexadecimales): no criptográfico, ultrarrápido, diseñado específicamente para detectar errores de transmisión. Usado por Ethernet, ZIP, PNG, gzip. No protege frente a malicia: un atacante puede forjar trivialmente un fichero con el mismo CRC32 que otro. Adaptado a controles de hardware rápidos, no a seguridad.

Casos de uso

  • Verificar una ISO Linux: Debian, Ubuntu, Fedora y Arch publican los SHA-256 y SHA-512 de cada imagen oficial, a menudo contrafirmados en GPG.
  • Validar un binario firmado: confirmar que un ejecutable descargado desde un mirror no ha sido sustituido por una versión trampa.
  • Comparar dos versiones: antes y después de una modificación, un checksum idéntico prueba la identidad bit a bit, sin necesidad de difundir los ficheros.
  • Validación de upload: el cliente envía un checksum, el servidor lo recalcula al recibir para confirmar la ausencia de corrupción.
  • Fingerprinting: detección de bots o de ficheros conocidos en bases de huellas (antivirus, threat intelligence, búsqueda de duplicados).

Cómo utilizarlo

  1. Arrastre y suelte el fichero en la zona prevista, o utilice el botón de selección.
  2. Elija el algoritmo: MD5, SHA-1, SHA-256, SHA-512 o CRC32.
  3. El checksum se muestra, listo para copiar.
  4. Compare el valor obtenido con el de referencia (publicado por el editor o conservado localmente).

El cálculo se hace localmente en su navegador, sin envío del fichero a un servidor remoto. El contenido permanece confidencial.

¿Cómo verificar una descarga con checksum?

El procedimiento estándar de verificación es el siguiente:

  1. El sitio oficial publica el checksum esperado, por ejemplo d41d8cd98f00b204e9800998ecf8427e para MD5 o una cadena de 64 caracteres para SHA-256.
  2. Descargue el fichero.
  3. Calcule su checksum, ya sea con esta herramienta o en línea de comandos.
  4. Compare: si las dos cadenas son estrictamente idénticas, carácter a carácter, el fichero está intacto. Si difieren, aunque sea en un solo carácter, el fichero está corrompido o manipulado: no lo use, vuelva a descargarlo.

En línea de comandos en Linux:


# Calculer le checksum
md5sum fichier.iso
sha1sum fichier.iso
sha256sum fichier.iso
sha512sum fichier.iso
cksum fichier.iso          # CRC32 + taille

# Vérifier automatiquement depuis un fichier .sha256 publié par l'éditeur
sha256sum -c fichier.iso.sha256
# Affiche : "fichier.iso: OK" si le checksum correspond

En macOS:


md5 fichier.iso
shasum -a 1 fichier.iso
shasum -a 256 fichier.iso
shasum -a 512 fichier.iso

# Vérification depuis un fichier de référence
shasum -a 256 -c fichier.iso.sha256

En Windows (PowerShell):


Get-FileHash fichier.iso -Algorithm MD5
Get-FileHash fichier.iso -Algorithm SHA1
Get-FileHash fichier.iso -Algorithm SHA256
Get-FileHash fichier.iso -Algorithm SHA512

# Comparer à une valeur attendue
(Get-FileHash fichier.iso -Algorithm SHA256).Hash -eq "ABC123..."

Comparación rápida de los algoritmos

Algoritmo Tamaño Velocidad Uso recomendado
CRC32 32 bits Muy rápido Detección de errores de red o almacenamiento, no criptográfico
MD5 128 bits Rápido Integridad no hostil únicamente, a evitar en seguridad
SHA-1 160 bits Rápido Obsoleto, compatibilidad antigua (Git, paquetes antiguos)
SHA-256 256 bits Moderada Estándar actual, verificación de integridad y firmas
SHA-512 512 bits Rápido en 64 bits Verificación de integridad, margen de seguridad superior

FAQ

¿MD5 o SHA-256 para verificar mi ISO?

SHA-256 por defecto. Casi todas las distribuciones Linux modernas publican SHA-256 y SHA-512, a veces junto con MD5 por compatibilidad histórica. Si el editor solo publica MD5 y teme un compromiso, exija SHA-256 o verifique la firma GPG del fichero de checksums. Si solo teme una corrupción en la descarga, MD5 basta técnicamente.

¿Garantiza el checksum la seguridad de mi fichero?

No, por sí solo. Un checksum prueba la integridad, no la autenticidad. Si un atacante controla el servidor de descarga, puede publicar un fichero modificado y su checksum modificado. La seguridad real proviene de una firma digital (GPG, code signing) que vincula el checksum a una clave privada conocida. Recupere siempre el checksum por HTTPS o, mejor, por una firma GPG verificable.

Mi checksum no coincide, ¿qué hago?

Primero, compruebe que compara el algoritmo correcto: un SHA-256 no puede coincidir con un SHA-1. Después, vuelva a empezar la descarga, idealmente desde otro mirror: la causa más frecuente es un corte de red. Si la desviación persiste tras varios intentos, sospeche un compromiso del mirror: vuelva a la fuente oficial y verifique la firma GPG si existe. No ejecute ni use nunca el fichero mientras el checksum no coincida.

¿Por qué MD5 está obsoleto?

MD5 sufre de colisiones prácticas: es posible construir dos ficheros distintos con exactamente el mismo hash MD5 en pocos segundos. Esta propiedad viola la función misma de un hash criptográfico. Concretamente, un atacante puede crear un binario malicioso con el mismo MD5 que un binario legítimo. SHA-1 sufre del mismo problema desde 2017 (ataque SHAttered). Solo SHA-256, SHA-512 y sus variantes siguen considerándose seguros en 2026.

¿Diferencia entre hash y checksum?

Un hash es el resultado genérico de una función de hash. Un checksum es un hash utilizado específicamente para verificar la integridad de un dato. Todos los checksums son hashes, pero no todos los hashes son checksums: un hash de contraseña (bcrypt, argon2) sirve para la autenticación, un hash en una tabla de hash sirve para indexar rápido. El término fingerprint o huella es sinónimo habitual de checksum.

¿Es suficiente CRC32 para mis necesidades?

CRC32 basta si solo busca detectar una corrupción accidental en un canal no hostil: transferencia de red interna, verificación de archivo ZIP, control de coherencia en memoria. Con solo 32 bits, dos ficheros aleatorios tienen una probabilidad de 1 entre 4000 millones de tener el mismo CRC32 por casualidad, suficiente para una detección de error. CRC32 es insuficiente en cuanto un atacante puede influir en el contenido: es trivial forjar un fichero con un CRC32 objetivo. Para cualquier verificación frente a un riesgo malicioso, utilice SHA-256.

¿Por qué mi checksum difiere según el SO?

El checksum de un mismo contenido binario es idéntico en todas partes. Si obtiene dos resultados distintos, es que el fichero realmente difiere: finales de línea (CRLF Windows frente a LF Unix) tras una transferencia FTP en modo texto, codificación del texto modificada al abrir, metadatos añadidos por el sistema (resolución Spotlight macOS, atributos extendidos), o recompresión silenciosa por un cliente de transferencia. Transfiera siempre en modo binario.

¿Checksum o firma digital?

Un checksum prueba que un fichero no ha sido alterado entre la publicación y la recepción, siempre que se recupere el checksum por un canal seguro. Una firma digital (GPG, PGP, code signing Authenticode) prueba además la identidad del autor gracias a una clave privada. La firma engloba y refuerza el checksum: la práctica estándar en Debian, Tor o Bitcoin Core es firmar en GPG el fichero de checksums y, después, utilizar esos checksums para verificar los binarios.

Preguntas frecuentes

¿Se envía el fichero a un servidor para calcular el checksum?

No. El cálculo se realiza íntegramente en su navegador gracias a la API Web Crypto y a rutinas JavaScript locales. El contenido del fichero no sale de su máquina, lo que permite hashear con plena confidencialidad documentos sensibles, archivos cifrados o volcados de base de datos. Este enfoque garantiza además rendimiento estable, independiente del ancho de banda.

¿Qué tamaño de fichero puedo hashear con esta herramienta?

El cálculo se hace en streaming por bloques, por lo que el límite depende esencialmente de la memoria y del tiempo que su navegador pueda dedicar a la operación. Algunos cientos de megaoctetos se procesan sin dificultad en un equipo estándar. Para ficheros de varios gigaoctetos (ISO completa, volcado voluminoso), prefiera la línea de comandos del sistema (sha256sum, Get-FileHash) que aprovecha mejor los recursos de disco y CPU.

¿Cuál es la diferencia entre hashear un fichero y hashear texto?

El algoritmo es exactamente el mismo, solo cambia la entrada. Para un texto, se hashea la secuencia de octetos de la cadena en una codificación dada (típicamente UTF-8). Para un fichero, se hashea el contenido binario en bruto, octeto a octeto, incluyendo las posibles cabeceras o metadatos integrados. Por eso un fichero de texto y su contenido copiado en un formulario pueden dar checksums distintos (BOM, finales de línea, codificación).

¿Por qué el checksum de un archivo ZIP varía en cada creación?

La mayoría de los archivadores (ZIP, TAR.GZ, 7z) almacenan metadatos variables como la fecha de creación, el orden de los ficheros o indicadores de compresión. Recrear un archivo con el mismo contenido produce, por tanto, un binario distinto y un checksum distinto. Para obtener archivos reproducibles, utilice herramientas como diffoscope, strip-nondeterminism o las opciones --mtime y --sort=name de tar.

¿Existen alternativas más rápidas que SHA-256 para verificar la integridad?

Sí. BLAKE2 y BLAKE3 son funciones de hash criptográficas modernas, diseñadas para ser más rápidas que SHA-256 ofreciendo a la vez un nivel de seguridad equivalente o superior. BLAKE3 aprovecha especialmente bien el paralelismo SIMD y multinúcleo, lo que lo hace muy eficiente con ficheros grandes. Para la pura detección de errores no hostil, xxHash es imbatible en velocidad, pero no es criptográfico.

¿Puedo comparar dos ficheros sin calcular su hash completo?

Para dos ficheros locales, una comparación binaria directa (cmp en Unix, fc /b en Windows) es más rápida que hashear los dos. El hash resulta útil cuando los ficheros no están en la misma máquina, o cuando se quiere conservar una huella corta sin guardar el original. Para controles frecuentes sobre grandes volúmenes, indexe los hashes en una base de datos y compare las huellas en lugar de los ficheros completos.

Ejemplo de solicitud

curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
  -F "file=@/path/to/file" \
  -F "algorithm=adler32"

Esquema de entrada

Campo Tipo Obligatorio Por defecto
file file
algorithm choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64)

esta herramienta espera un archivo - utiliza Content-Type multipart/form-data en lugar de application/json

Puntos de acceso

  • GET https://cdrn.fr/api/v1/tools - lista todas las herramientas disponibles
  • GET https://cdrn.fr/api/v1/tools/hash-file-generator - recupera el esquema de esta herramienta
  • POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute - ejecuta esta herramienta con un payload JSON