我正在使用一个非常简单的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函数答案 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