Me gustaría calcular una suma de verificación MD5 de algún contenido. ¿Cómo hago esto en PowerShell?
powershell
powershell-2.0
Lucas101
fuente
fuente
Respuestas:
Si el contenido es una cadena:
Si el contenido es un archivo:
A partir de PowerShell versión 4, esto es fácil de hacer para los archivos
Get-FileHash
listos para usar con el cmdlet:Esto es ciertamente preferible ya que evita los problemas que ofrece la primera solución identificada en los comentarios (usa una secuencia, la cierra y admite archivos grandes).
fuente
Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size."
Como un chico de Linux nuevo en Powershell, estoy muy molesto con las dificultades que estoy teniendo para obtener una suma md5, que sería simplementemd5sum file.ext
en Linux.$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
esto le da un bajo uso de memoria y no hay límite de 2GB .$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
entonces$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
luego$stream.Close()
Si está utilizando las Extensiones de comunidad de PowerShell, hay un comando Get-Hash que lo hará fácilmente:
fuente
Get-FileHash
en Vanilla PowerShell 4.0. Vide TechNet .Aquí están las dos líneas, simplemente cambie "hola" en la línea # 2:
fuente
Aquí hay una función que uso que maneja rutas relativas y absolutas:
Gracias a @davor arriba por la sugerencia de usar Open () en lugar de ReadAllBytes () y a @ jpmc26 por la sugerencia de usar un bloque finalmente.
fuente
Dispose
llamada debe estar en unfinally
bloque.Otro comando incorporado que se instaló por mucho tiempo en Windows de forma predeterminada desde 2003 es Certutil , que por supuesto también se puede invocar desde PowerShell.
(Advertencia: MD5 debe estar en mayúsculas para máxima robustez)
fuente
FipsAlgorithmPolicy
está habilitada.Hay muchos ejemplos en línea usando ComputeHash (). Mi prueba mostró que esto era muy lento cuando se ejecutaba a través de una conexión de red. El fragmento a continuación funciona mucho más rápido para mí, sin embargo, su kilometraje puede variar:
fuente
write-progress
línea? Al resaltador de sintaxis no parece gustarle.Este sitio tiene un ejemplo: Uso de Powershell para sumas de verificación MD5 . Utiliza el marco .NET para crear una instancia del algoritmo hash MD5 para calcular el hash.
Aquí está el código del artículo, incorporando el comentario de Stephen:
fuente
Como se indica en la respuesta aceptada,
Get-FileHash
es fácil de usar con archivos, pero también es posible usarlo con cadenas:fuente
Ahora hay una función Get-FileHash que es muy útil.
Solo cambia
SHA384
aMD5
.El ejemplo es de la documentación oficial de PowerShell 5.1 . La documentación tiene más ejemplos.
fuente
Esto se convierte en una línea si descarga File Checksum Integrity Verifier (FCIV) de Microsoft.
Descargué FCIV desde aquí: Disponibilidad y descripción de la utilidad File Checksum Integrity Verifier
Ejecute el siguiente comando. Tenía diez archivos para verificar.
fuente
PowerShell One-Liners (cadena a hash)
MD5
SHA1
SHA256
SHA384
SHA512
fuente
Esto devolverá un hash MD5 para un archivo en una computadora remota:
fuente
Muestra de la opción de menú del botón derecho también:
fuente
Aquí hay un bonito ejemplo de impresión que intenta verificar la huella digital SHA256. Descargué gpg4win v3.0.3 usando PowerShell v4 (requiere
Get-FileHash
).Descargue el paquete de https://www.gpg4win.org/download.html , abra PowerShell, tome el hash de la página de descarga y ejecute:
Salida:
fuente
Aquí hay un ejemplo de comando de una línea con ambos computando la suma de verificación adecuada del archivo , como la que acaba de descargar, y la comparación con la suma de verificación publicada del original.
Por ejemplo, escribí un ejemplo para descargas del proyecto Apache JMeter . En este caso tienes:
Luego, utilizando este comando de PowerShell, puede verificar la integridad del archivo descargado:
Salida:
Explicación:
El primer operando del
-eq
operador es el resultado de calcular la suma de comprobación para el archivo:El segundo operando es el valor de suma de control publicado. Primero obtenemos contenido del archivo.md5, que es una cadena y luego extraemos el valor hash en función del formato de cadena:
Tanto file como file.md5 deben estar en la misma carpeta para que este comando funcione.
fuente
Esto es lo que uso para obtener un valor hash consistente:
fuente
Aquí está el fragmento que estoy usando para obtener el MD5 para una cadena dada:
fuente