CERTUTIL - Hash y Base64

Mantenido el

Las páginas de descarga suelen mostrar una cadena como «SHA-256: 3a7bd3e2…». Es un valor hash, que sirve para comprobar que el archivo descargado no está dañado ni ha sido manipulado.

Windows incluye el comando CERTUTIL, que calcula valores hash sin instalar ningún programa adicional.

¿Qué es un valor hash?

Un valor hash es una cadena de longitud fija calculada a partir del contenido de un archivo. Si cambia un solo byte, el resultado es completamente distinto. Si el hash publicado coincide con el de tu archivo local, puedes confirmar que es el mismo archivo.

Uso básico

Sintaxis
CERTUTIL -hashfile archivo [algoritmo]
Calcular_un_hash_SHA-256
certutil -hashfile setup.exe SHA256
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>certutil -hashfile setup.exe SHA256
SHA256 hash of setup.exe:
3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b
CertUtil: -hashfile command completed successfully.
C:\users\user>

La segunda línea es el valor hash. El texto de los mensajes depende del idioma de visualización del sistema, pero la segunda línea siempre es el valor hash.

Si omites el algoritmo se usa SHA1

Si omites el algoritmo, se calcula con SHA1. Cuando el editor publique un valor SHA-256, indica siempre SHA256 de forma explícita.

Algoritmos admitidos

AlgoritmoDescripción
MD2, MD4128 bits. Muy antiguos; no deben usarse
MD5128 bits. Antiguo; no apto para detectar manipulaciones
SHA1160 bits. Valor predeterminado; también poco seguro
SHA256256 bits. El más utilizado actualmente
SHA384384 bits
SHA512512 bits

Se sabe que es posible crear deliberadamente archivos distintos con el mismo hash MD5 o SHA1. Sirven para detectar daños accidentales, pero no para confirmar que un archivo no ha sido alterado de forma maliciosa. Usa SHA256 o superior siempre que el editor lo proporcione.

Comparar con un hash publicado

Los valores hash son largos y es fácil equivocarse al compararlos a simple vista. Pasar el valor publicado a findstr permite una comprobación fiable.

Comprobar_si_el_hash_coincide
certutil -hashfile setup.exe SHA256 | findstr /I "3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b"

Si coincide, se muestra la línea; si no, no se muestra nada. La opción /I ignora las diferencias entre mayúsculas y minúsculas.

チェック

La línea CertUtil: -hashfile command completed successfully. aparece con cualquier archivo, sin importar el hash. Buscar el propio valor hash evita falsos positivos por esa línea.

Comparar automáticamente en un archivo por lotes

Este ejemplo compara el archivo recibido como argumento con el hash esperado.

verify_hash.cmd
@echo off
setlocal EnableDelayedExpansion

set "FILE=%~1"
set "EXPECTED=%~2"
set "ACTUAL="

for /f "skip=1 delims=" %%H in ('certutil -hashfile "%FILE%" SHA256') do (
    if not defined ACTUAL set "ACTUAL=%%H"
)

set "ACTUAL=!ACTUAL: =!"

if /I "!ACTUAL!"=="%EXPECTED%" (
    echo [OK] Los valores hash coinciden.
) else (
    echo [NG] Los valores hash no coinciden.
    exit /b 1
)
endlocal
Ejemplo_de_ejecución
verify_hash.cmd setup.exe 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b

skip=1 omite la línea de encabezado y solo se guarda en la variable la primera línea obtenida (el valor hash). En versiones antiguas de Windows el hash se muestra con un espacio cada dos caracteres, por lo que !ACTUAL: =! elimina los espacios.

Codificar y decodificar Base64

CERTUTIL también puede convertir un archivo en una cadena Base64.

Convertir_un_archivo_a_Base64
certutil -encode input.bin output.txt
Restaurar_un_archivo_desde_Base64
certutil -decode output.txt restored.bin
Formato del archivo de salida

Un archivo creado con -encode lleva una línea -----BEGIN CERTIFICATE----- al principio y una línea -----END CERTIFICATE----- al final, aunque los datos no sean un certificado. -decode restaura el archivo correctamente con esas líneas. Si necesitas solo el texto Base64, elimínalas.

Sobrescribir un archivo existente requiere -f

Si ya existe un archivo con el mismo nombre en el destino, el comando falla. Para sobrescribirlo, añade -f, como en certutil -f -encode input.bin output.txt. Con -f se sobrescribe sin pedir confirmación, así que ten cuidado de no indicar un archivo importante.

Errores comunes

Si no se encuentra el archivo, aparece un error como este:

- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>certutil -hashfile missing.exe SHA256
CertUtil: -hashfile command FAILED: 0x80070002 (WIN32: 2 ERROR_FILE_NOT_FOUND)
CertUtil: The system cannot find the file specified.
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

Si el nombre del archivo contiene espacios, enciérralo entre comillas dobles, como "my file.exe".

Si falla, se devuelve un código de salida distinto de 0. Cuando no se encuentra el archivo es un valor negativo como -2147024894, así que compruébalo con IF %ERRORLEVEL% NEQ 0 o con || en lugar de IF ERRORLEVEL 1.

Resumen

OperaciónComando
Calcular SHA-256certutil -hashfile archivo SHA256
Calcular MD5certutil -hashfile archivo MD5
Convertir un archivo a Base64certutil -encode entrada salida
Restaurar desde Base64certutil -decode entrada salida

Artículos relacionados

Ejercicio

Problema de práctica

¿Qué comando calcula correctamente el hash SHA-256 del archivo setup.exe?

回答がサーバーに送信されることはありません
#Línea de comandos #Archivos por lotes #CERTUTIL #Hash #SHA-256 #Base64 #Comando