Cómo obtener el checksum MD5 en PowerShell

  1. Uso del Algoritmo de Hashing MD5 en PowerShell
  2. Uso de la Clase [System.Security.Cryptography.MD5] en PowerShell
  3. Uso de la Clase MD5CryptoServiceProvider en PowerShell
  4. Conclusión
Cómo obtener el checksum MD5 en PowerShell

Cuando se trata de garantizar la integridad y seguridad de los datos en PowerShell, el algoritmo de hashing MD5 sigue siendo una herramienta valiosa a pesar de su relevancia decreciente en contextos de seguridad. Aunque no se recomienda para propósitos criptográficos debido a vulnerabilidades, MD5 sigue siendo útil para verificar transferencias de archivos y detectar manipulaciones.

Aprovechando las capacidades de PowerShell, exploramos varios métodos para calcular sumas de verificación MD5, proporcionando información sobre enfoques tanto fundamentales como avanzados.

Uso del Algoritmo de Hashing MD5 en PowerShell

Aun cuando MD5 no se recomienda para seguridad, sigue siendo una solución excelente para comprobar si una transferencia de archivo ha sido manipulada o ha sido exitosa.

Primero, obtenga la huella digital MD5 del archivo antes y después de la transferencia.

Si resulta en el mismo valor, la transferencia de archivo no ha sido manipulada. Si no, está corrupta.

Para hacer esto, utilizaremos el cmdlet Get-FileHash. El cmdlet Get-FileHash muestra el valor hash de un archivo.

Utiliza el algoritmo SHA256 por defecto, pero podemos agregar un parámetro adicional para usar MD5.

Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
  • -Algorithm: Especifica el algoritmo hash a usar. En este caso, usamos MD5.
  • -Path: Especifica la ruta al archivo para el cual desea calcular el valor hash.

También podemos usarlo con un flujo en lugar de una ruta de archivo.

Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
  • [-InputStream] <stream>: Especifica el flujo de entrada para el cálculo del hash, que por defecto es el archivo especificado por -Path.

  • [[-Algorithm] <algo>]: Especifica el algoritmo hash (por ejemplo, MD5, SHA1) a utilizar.

  • [Options]: Configuraciones adicionales como -Path, -LiteralPath, -Force, etc., para personalización y manejo de errores.

Aquí hay un ejemplo:

Get-FileHash -Path "path\example.txt" -Algorithm MD5

En este código, utilizamos el cmdlet Get-FileHash para calcular la suma de verificación MD5 del archivo ubicado en "C:\Path\To\File.txt". El cmdlet calcula automáticamente el valor hash MD5 para el archivo especificado.

Salida:

obteniendo la suma de verificación md5 en powershell - salida 1

El argumento -Path no es obligatorio, por lo que no necesitamos usarlo. En su lugar, damos la ruta del archivo y agregamos el parámetro de algoritmo para usar MD5 en lugar de SHA256.

Usando PowerShell en un script, podemos crear una variable con el resultado y obtener el valor hash con la propiedad hash como $variable.Hash para asegurarnos de que sea el mismo valor que el archivo original.

Hashing de Cadenas en PowerShell

Desafortunadamente, no hay una función directa o comandos nativos para generar un hash de una cadena en PowerShell.

Sin embargo, es posible usar Get-FileHash con un parámetro de flujo, por lo que es una solución para calcular el hash de una cadena.

Comencemos directamente con el fragmento a continuación:

$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("MD5Online")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream -Algorithm MD5

En este fragmento de código, creamos un objeto MemoryStream $stringAsStream e inicializamos un StreamWriter $writer para escribir la cadena MD5Online en el flujo. Luego, vaciamos el escritor para asegurarnos de que los datos se escriban en el flujo.

Después de establecer la posición del flujo de nuevo al principio, utilizamos el cmdlet Get-FileHash con el parámetro -InputStream establecido en $stringAsStream y el parámetro -Algorithm establecido en MD5. Este comando calcula la suma de verificación MD5 de la cadena proporcionada.

Salida:

obteniendo la suma de verificación md5 en powershell - salida 2

Comparado con la primera sección de este artículo, el único cambio es que usamos -InputStream en lugar de -Path.

Como puedes ver en la salida, obtenemos el hash MD5 de nuestra cadena como resultado.

Uso de la Clase [System.Security.Cryptography.MD5] en PowerShell

La clase [System.Security.Cryptography.MD5] proporciona funcionalidad para calcular el valor hash MD5 de los datos. Esta clase es parte del espacio de nombres de Criptografía del .NET Framework y ofrece una solución robusta y eficiente para generar sumas de verificación MD5 en scripts de PowerShell.

La clase [System.Security.Cryptography.MD5] proporciona un método llamado ComputeHash() para calcular el valor hash MD5. La sintaxis es la siguiente:

$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
  • $md5: Representa una instancia de la clase MD5 creada utilizando el método Create().
  • $hash: Almacena el valor hash MD5 calculado.
  • $data: Especifica los datos para los cuales se debe calcular la suma de verificación MD5. Esto puede ser un array de bytes representando el contenido de un archivo o una cadena.

Aquí hay un ejemplo:

$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString

En este fragmento de código, convertimos la cadena MD5Example en un array de bytes utilizando [System.Text.Encoding]::UTF8.GetBytes(). Luego, creamos una instancia de la clase MD5 utilizando [System.Security.Cryptography.MD5]::Create() y llamamos al método ComputeHash() para generar el valor hash MD5 para los datos proporcionados.

Finalmente, convertimos el valor hash a un formato de cadena utilizando [System.BitConverter]::ToString() y eliminamos cualquier guion en la salida utilizando el operador -replace.

Salida:

obteniendo el checksum md5 en powershell - salida 3

Uso de la Clase MD5CryptoServiceProvider en PowerShell

La clase MD5CryptoServiceProvider es parte del espacio de nombres de Criptografía del .NET Framework. Esta clase proporciona funcionalidad para calcular el valor hash MD5 de los datos utilizando el algoritmo criptográfico MD5.

La clase MD5CryptoServiceProvider proporciona un método llamado ComputeHash() para calcular el valor hash MD5. La sintaxis es la siguiente:

$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
  • $md5: Representa una instancia de la clase MD5CryptoServiceProvider creada utilizando New-Object.
  • $hash: Almacena el valor hash MD5 calculado.
  • $data: Especifica los datos para los cuales se debe calcular la suma de verificación MD5. Esto puede ser un array de bytes representando el contenido de un archivo o una cadena.

Aquí hay un ejemplo:

$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString

En este fragmento de código, convertimos la cadena MD5Example en un array de bytes utilizando [System.Text.Encoding]::UTF8.GetBytes(). Luego, creamos una instancia de la clase MD5CryptoServiceProvider utilizando New-Object y llamamos al método ComputeHash() para generar el valor hash MD5 para los datos proporcionados.

Finalmente, convertimos el valor hash a un formato de cadena utilizando [System.BitConverter]::ToString() y eliminamos cualquier guion en la salida utilizando el operador -replace.

Salida:

obteniendo el checksum md5 en powershell - salida 4

Conclusión

PowerShell ofrece múltiples avenidas para calcular sumas de verificación MD5, cada una adecuada para diferentes escenarios y niveles de complejidad. Ya sea utilizando cmdlets integrados como Get-FileHash, aprovechando el poder de clases .NET como System.Security.Cryptography.MD5, o empleando proveedores criptográficos como MD5CryptoServiceProvider, los usuarios de PowerShell tienen herramientas versátiles a su disposición para garantizar la integridad y seguridad de los datos.

Al comprender y utilizar estos métodos de manera efectiva, los scripts de PowerShell pueden manejar con confianza tareas que requieren sumas de verificación MD5 con precisión y fiabilidad.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn