Powershell MD5十六进制到字符串

时间:2016-08-05 13:23:27

标签: powershell

我正在使用一个非常简单的Powershell函数来计算MD5哈希

$someString = "Hello World!"
$md5 = new-object -TypeNameSystem.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = new-object -TypeName System.Text.UTF8Encoding
$bithash = [System.BitConverter]::ToString($md5.ComputeHash(($utf8.GetBytes($someString))))
$hash = [convert]::tostring($bitHash,16)
Write-Host $hash

根据MSDN page,System.BitConverter返回一个十六进制 然后我尝试将其转换为字符串

上面的代码返回一个错误,即toString的输入格式不正确。

我在这里缺少什么?

我希望在powershell中创建一个匹配http://md5.gromweb.com/

输出的MD5函数

1 个答案:

答案 0 :(得分:2)

如果您使用的是PowerShell 4,可以采用另一种方式:

$stream = New-Object System.IO.MemoryStream -ArgumentList @(,$utf8.GetBytes($someString))
$hash = Get-FileHash -Algorithm MD5 -InputStream $stream | Select-Object -ExpandProperty Hash

在PowerShell 5 +中:

$stream = [System.IO.MemoryStream]::new($utf8.GetBytes($someString))
$hash = Get-FileHash -Algorithm MD5 -InputStream $stream | Select-Object -ExpandProperty Hash