Pide tu presupuesto ya!
22 de octubre de 2026
Has descargado una imagen ISO, un instalador o una copia de seguridad y la web de origen publica una cadena larga de letras y números junto al enlace: el hash o suma de verificación. Calcularlo en tu equipo y compararlo con el publicado es la forma estándar de comprobar que el archivo no se corrompió durante la descarga y, si el hash viene de una fuente de confianza, que no ha sido modificado. En Windows no hace falta instalar nada: la herramienta certutil con la opción -hashfile lo calcula desde el símbolo del sistema.
Esta guía te explica cómo se usa, qué algoritmos admite, cómo comparar el resultado sin equivocarte, qué limitaciones tiene la comprobación y cuándo es mejor usar la alternativa de PowerShell. Si buscas el resto de funciones de la herramienta (consultar y gestionar certificados), están en nuestra guía de Certutil para la gestión de certificados.
Según la documentación de Microsoft, la opción -hashfile «genera y muestra un hash criptográfico de un archivo». La sintaxis es:
certutil [opciones] -hashfile ArchivoEntrada [AlgoritmoHash]
Un hash es una huella de tamaño fijo calculada a partir del contenido del archivo. Si cambias un solo bit del archivo, el hash resultante es completamente distinto. Por eso sirve para detectar cualquier alteración: descarga interrumpida, error de disco o modificación malintencionada.
Las funciones hash tienen tres propiedades que explican su utilidad. Son deterministas: el mismo archivo da siempre el mismo hash, en cualquier equipo. Tienen tamaño fijo: un archivo de 10 KB y uno de 10 GB producen un hash de la misma longitud. Y presentan el llamado efecto avalancha: un cambio mínimo en el archivo altera por completo el resultado. Una cuarta propiedad es la que separa los algoritmos modernos de los antiguos: la resistencia a las colisiones, es decir, que sea inviable fabricar dos archivos distintos con el mismo hash. En MD5 y SHA1 se han demostrado colisiones prácticas, por eso no se recomiendan cuando alguien podría querer manipular el archivo a propósito; para detectar un simple error de descarga siguen sirviendo.
certutil -hashfile "C:\Users\Ana\Downloads\ubuntu.iso" SHA256
La salida tiene este aspecto (el texto exacto cambia según el idioma de Windows y el valor del hash, claro, es el de tu archivo):
SHA256 hash of C:\Users\Ana\Downloads\ubuntu.iso:
3f4c1b8e0a5d... (64 caracteres hexadecimales)
CertUtil: -hashfile command completed successfully.
La línea intermedia es el hash. Los archivos grandes tardan unos segundos o minutos en procesarse, porque el programa tiene que leer el archivo entero; no es un cuelgue.
| Algoritmo | Longitud del hash | Cuándo usarlo |
|---|---|---|
| MD5 | 32 caracteres hex | Solo para detectar corrupción accidental o si es el único que publica el proveedor. No es seguro frente a manipulación intencionada. |
| SHA1 | 40 caracteres hex | Igual que MD5: aceptable para errores de descarga, no frente a ataques. Es el valor por defecto de certutil. |
| SHA256 | 64 caracteres hex | La opción recomendada hoy para verificar descargas. |
| SHA384 / SHA512 | 96 / 128 caracteres hex | Cuando el proveedor publica ese algoritmo. |
Certutil también admite MD2 y MD4, pero están obsoletos y no hay motivo para usarlos. La regla práctica: calcula el mismo algoritmo que publica el proveedor. Si publica SHA256, usa SHA256; comparar un MD5 con un SHA256 no tiene sentido porque son valores distintos por diseño.
La comparación debe ser exacta, carácter a carácter. Dos consejos para no equivocarte:
En PowerShell puedes automatizar la comparación. Esta versión ejecuta certutil, toma la línea del hash y la compara con el valor esperado, ignorando espacios y mayúsculas:
$esperado = "PEGA_AQUI_EL_HASH_PUBLICADO"
$calculado = (certutil -hashfile "C:\Users\Ana\Downloads\ubuntu.iso" SHA256)[1] -replace '\s', ''
if ($calculado -ieq $esperado) { "Coincide" } else { "NO coincide" }
El índice [1] toma la segunda línea de la salida, que es la que contiene el hash. Si tu versión de Windows muestra el resultado con otra estructura, ajusta el índice.
Desde PowerShell 4.0 existe un cmdlet específico, Get-FileHash, que devuelve el hash como objeto y es más cómodo para scripts:
Get-FileHash "C:\Users\Ana\Downloads\ubuntu.iso" -Algorithm SHA256
Calcula SHA256 por defecto y admite SHA1, SHA384, SHA512 y MD5, entre otros. La ventaja frente a certutil es que no tienes que analizar texto: puedes comparar directamente la propiedad Hash. Certutil sigue siendo útil en equipos donde solo dispones del símbolo del sistema, en scripts .bat antiguos y en sistemas donde PowerShell está restringido.
| Necesidad | Herramienta |
|---|---|
| Una comprobación rápida desde cmd | certutil -hashfile archivo SHA256 |
| Un script en PowerShell | Get-FileHash archivo -Algorithm SHA256 |
| Verificar muchos archivos de una carpeta | Un bucle con cualquiera de los dos |
| Equipo Linux o macOS | sha256sum archivo o shasum -a 256 archivo |
En un archivo por lotes o directamente en el símbolo del sistema puedes recorrer una carpeta. En la consola se escribe un solo signo de porcentaje; dentro de un archivo .bat se duplica:
for %f in (*.iso) do certutil -hashfile "%f" SHA256
En PowerShell, con salida en forma de tabla:
Get-ChildItem *.iso | Get-FileHash -Algorithm SHA256 | Select-Object Hash, Path
Aquí está el error de concepto más extendido. Que el hash coincida solo prueba que tu archivo es idéntico al que tiene la persona que publicó ese hash. No prueba que el archivo sea seguro. Y si el hash está en la misma página que el enlace de descarga, un atacante que haya comprometido la web puede haber cambiado ambos a la vez. Para que la comprobación aporte seguridad real:
-hashfile trabaja con archivos. Para un texto, guárdalo primero en un archivo (con cuidado con los saltos de línea finales, que cambian el hash).Certutil es mucho más que un calculador de hashes: gestiona certificados, almacenes de certificados y listas de revocación. Si trabajas con certificados SSL de tu web, te vendrá bien saber convertir formatos; lo explicamos en la guía de conversión de certificados CRT a PEM. Y si buscas más guías técnicas de administración de sistemas, tienes el resto en el blog.
certutil -hashfile archivo SHA256 calcula el hash de un archivo en Windows sin instalar nada.Get-FileHash es la alternativa cómoda en PowerShell.Cuando dos resultados parecen distintos, empieza por fijar la ruta y el algoritmo. Dos archivos con el mismo nombre pueden estar en carpetas diferentes, y SHA256 no produce el mismo resultado que SHA1. Este ejemplo utiliza una ruta absoluta almacenada una sola vez y no modifica el archivo.
$archivoVerificado = 'C:\Descargas\instalador.iso'
if (-not (Test-Path -LiteralPath $archivoVerificado -PathType Leaf)) {
throw 'El archivo indicado no existe'
}
certutil -hashfile $archivoVerificado SHA256
Get-FileHash -LiteralPath $archivoVerificado -Algorithm SHA256 |
Select-Object Algorithm, Hash, Path
Sustituye la ruta por la del archivo que quieres comprobar. Compara únicamente la cadena hexadecimal del hash, sin las etiquetas de salida de Certutil. Las letras mayúsculas o minúsculas no cambian su valor hexadecimal. Si el archivo cambia entre una lectura y otra, repite la comprobación sobre una copia estable.
Como prueba de funcionamiento puedes crear un archivo de texto pequeño en una carpeta de trabajo y ejecutar ambos comandos contra esa misma ruta. Obtener el mismo resultado confirma que has comparado esas lecturas con el mismo algoritmo; no demuestra quién publicó el archivo ni que sea seguro ejecutarlo.
Consulta las referencias de Certutil y Get-FileHash para las opciones admitidas. Para verificar una descarga, consigue además el valor esperado desde una fuente del distribuidor que puedas autenticar.