Cómo calcular el hash SHA-256 desde powershell sin importar un módulo en Windows 11
🔍 WiseChecker

Cómo calcular el hash SHA-256 desde powershell sin importar un módulo en Windows 11

Necesita verificar la integridad de un archivo descargado o comprobar una suma de comprobación en Windows 11. PowerShell ofrece una forma integrada de calcular hashes SHA-256 sin instalar ni importar módulos externos. Este artículo explica cómo usar el cmdlet nativo Get-FileHash y las clases .NET subyacentes para generar hashes SHA-256 directamente desde la línea de comandos. Aprenderá los comandos exactos, comprenderá cómo funcionan y evitará errores comunes que producen valores de hash incorrectos.

Puntos clave: Calcular el hash SHA-256 en PowerShell en Windows 11

  • Get-FileHash -Algorithm SHA256 -Path : El cmdlet nativo de PowerShell para calcular un hash SHA-256 de cualquier archivo sin necesidad de un módulo
  • [System.Security.Cryptography.SHA256]::Create().ComputeHash() method: La clase .NET que PowerShell puede llamar directamente para escenarios avanzados, como calcular el hash de cadenas o transmitir datos
  • Format-Hex o conversión ToString: Necesario para convertir la salida de bytes sin procesar de los métodos .NET en la cadena de hash hexadecimal estándar

ADVERTISEMENT

Comprender SHA-256 y las capacidades nativas de PowerShell

SHA-256 es una función hash criptográfica que produce un valor hash de 256 bits (32 bytes). Forma parte de la familia SHA-2 y se usa ampliamente para la verificación de integridad de archivos, firmas digitales y almacenamiento de contraseñas. Windows 11 incluye compatibilidad con SHA-256 en .NET Framework, a la que PowerShell puede acceder sin descargas adicionales.

PowerShell versión 4.0 y posteriores incluyen el cmdlet Get-FileHash. Este cmdlet usa las clases criptográficas de .NET en segundo plano. No necesita importar un módulo como Microsoft.PowerShell.Utility explícitamente porque se carga de forma predeterminada en PowerShell 5.1 y PowerShell 7.x. El cmdlet admite varios algoritmos: SHA1, SHA256, SHA384, SHA512, MD5 y RIPEMD160. SHA256 es el algoritmo predeterminado para Get-FileHash en algunas versiones de PowerShell, pero debe especificarlo explícitamente para mayor claridad.

Para escenarios en los que necesita calcular el hash de una cadena en lugar de un archivo, o en los que desea más control sobre el proceso de hash, PowerShell puede llamar directamente a la clase System.Security.Cryptography.SHA256 de .NET. Este método tampoco requiere módulos porque las clases .NET forman parte de la biblioteca de clases base de Windows.

Pasos para calcular el hash SHA-256 con Get-FileHash

El cmdlet Get-FileHash es la forma más sencilla y confiable de calcular un hash SHA-256 de un archivo. Siga estos pasos.

  1. Abra PowerShell como administrador o usuario estándar
    Presione la tecla Windows, escriba PowerShell y seleccione Windows PowerShell o PowerShell 7. No necesita privilegios de administrador para calcular el hash de archivos que puede leer.
  2. Navegue al directorio del archivo (opcional)
    Use el comando cd para cambiar a la carpeta que contiene el archivo. Por ejemplo: cd C:\Users\YourName\Downloads. Este paso simplifica la ruta del archivo en el siguiente comando.
  3. Ejecute Get-FileHash con el algoritmo SHA256
    Escriba el siguiente comando y presione Entrar:
    Get-FileHash -Algorithm SHA256 -Path "filename.exe"
    Reemplace filename.exe con el nombre real del archivo. Si el archivo no está en el directorio actual, proporcione la ruta completa: C:\Path\To\file.iso.
  4. Lea la salida
    PowerShell muestra tres columnas: Algorithm muestra SHA256, Hash muestra la cadena hexadecimal de 64 caracteres y Path muestra la ruta del archivo. Compare el valor de hash con la suma de comprobación proporcionada por la fuente del archivo.
  5. Calcule el hash de varios archivos a la vez
    Puede pasar varias rutas de archivo al mismo comando:
    Get-FileHash -Algorithm SHA256 -Path "file1.zip", "file2.zip"
    PowerShell devuelve un hash para cada archivo en una fila separada.

ADVERTISEMENT

Pasos para calcular el hash SHA-256 con clases .NET sin Get-FileHash

Use este método cuando necesite calcular el hash de una cadena, calcular el hash de datos de una secuencia o trabajar en un entorno donde Get-FileHash no esté disponible. El enfoque de .NET le brinda control total sobre el formato de entrada y salida.

  1. Cree un objeto SHA256
    Escriba el siguiente comando para crear una instancia de la clase SHA256:
    $sha256 = [System.Security.Cryptography.SHA256]::Create()
    Este comando no requiere importar ningún módulo.
  2. Calcule el hash de una cadena
    Convierta la cadena en bytes, calcule el hash y convierta el resultado a hexadecimal:
    $stringBytes = [System.Text.Encoding]::UTF8.GetBytes("YourString")
    $hashBytes = $sha256.ComputeHash($stringBytes)
    $hashHex = [System.BitConverter]::ToString($hashBytes) -replace '-', ''
    $hashHex
    La variable $hashHex ahora contiene el hash SHA-256 como una cadena hexadecimal en mayúsculas de 64 caracteres.
  3. Calcule el hash de un archivo con .NET
    Abra una secuencia de archivo y calcule su hash:
    $stream = [System.IO.File]::OpenRead("C:\Path\To\file.exe")
    $hashBytes = $sha256.ComputeHash($stream)
    $stream.Close()
    $hashHex = [System.BitConverter]::ToString($hashBytes) -replace '-', ''
    $hashHex
    Cierre siempre la secuencia para liberar recursos del sistema.
  4. Deseche el objeto SHA256
    Después de calcular todos los hashes necesarios, deseche el objeto:
    $sha256.Dispose()
    Este paso libera recursos criptográficos.

Errores comunes y cosas que debe evitar

PowerShell muestra un hash diferente al esperado

La causa más frecuente es usar el algoritmo incorrecto. Algunos sitios web proporcionan hashes MD5 o SHA-1. Verifique que la fuente indique específicamente SHA-256. Además, asegúrese de comparar el hash completo de 64 caracteres. Los hashes truncados o parciales no coincidirán.

No se encuentra el comando Get-FileHash

Este error ocurre en versiones muy antiguas de PowerShell 3.0 o anteriores. Windows 11 incluye PowerShell 5.1, que incluye Get-FileHash. Si usa PowerShell 7, el cmdlet también está presente. Ejecute $PSVersionTable.PSVersion para comprobar su versión. Si ve la versión 3.0 o inferior, use el método de clase .NET en su lugar.

La salida del hash está en mayúsculas o minúsculas

El cmdlet Get-FileHash devuelve el hash en mayúsculas. El método .NET que usa BitConverter también devuelve mayúsculas. Muchas fuentes de sumas de comprobación muestran minúsculas. Las mayúsculas y minúsculas no afectan el valor del hash. Use .ToLower() para convertir si es necesario: $hashHex.ToLower().

El hash de una cadena difiere entre sistemas

El hash depende de la codificación de bytes de la cadena. Especifique siempre la codificación explícitamente. El ejemplo anterior usa UTF8. Si usa ASCII o Unicode, el hash será diferente. Coincida con la codificación usada por el sistema que generó el hash original.

La ruta del archivo contiene espacios o caracteres especiales

Escriba siempre las rutas de archivo entre comillas. PowerShell interpreta los espacios como separadores de argumentos. Use comillas simples 'C:\My Files\file.txt' o comillas dobles "C:\My Files\file.txt".

ADVERTISEMENT

Get-FileHash frente al método de clase .NET: diferencias de uso

Elemento Cmdlet Get-FileHash Clase SHA256 de .NET
Tipo de entrada Solo ruta de archivo Matriz de bytes, secuencia o cadena
Formato de salida Objeto con Algorithm, Hash, Path Matriz de bytes sin procesar
Facilidad de uso Un solo comando, no se necesita conversión Varios pasos, requiere conversión hexadecimal
Requisito de módulo Ninguno, integrado en PowerShell 5.1+ Ninguno, .NET forma parte de Windows
Rendimiento con archivos grandes Bueno, usa transmisión internamente Bueno, pero debe administrar la secuencia

Use Get-FileHash para verificaciones rápidas de integridad de archivos. Use la clase .NET cuando necesite calcular el hash de cadenas o controlar la codificación y el proceso de transmisión.

Ahora puede calcular hashes SHA-256 en PowerShell en Windows 11 sin importar ningún módulo. Use Get-FileHash -Algorithm SHA256 para archivos y la clase SHA256 de .NET para cadenas o escenarios avanzados. Verifique siempre que el algoritmo y la codificación coincidan con la fuente. Para scripts automatizados, considere agregar un -replace '-' al método .NET para producir hashes en minúsculas de forma consistente.

ADVERTISEMENT