【问题标题】:How to create md5 of string with powershell without using stream [duplicate]如何在不使用流的情况下使用 powershell 创建字符串的 md5 [重复]
【发布时间】:2022-11-28 11:57:55
【问题描述】:
尝试使用与 linux 生成的结果匹配的 powershell 创建字符串的 md5 散列...问题当然是 powershell 似乎只散列文件...
大多数答案指向 memorystream/streamwriter 但问题是如果没有......如何做...发布这个是因为有一个答案但必须搜索 PowerShell 2.0 才能找到所以将发布带有链接和受限标题的解决方案
【问题讨论】:
标签:
string
powershell
powershell-2.0
md5
【解决方案1】:
post 解决了问题...只是发现在需要遗留 powershell 2.0 解决方案之后...在 powershell 上的简单搜索没有立即出现(或者我的 google-fu 可能缺少)...另外, diff vs. linux(如果我记得的话)是关于 UTF-8 不匹配......
解决方案:
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = New-Object -TypeName System.Text.UTF8Encoding
$String = "Hello, world!"
$Hash = ([System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($String)))).replace("-","").ToLower()
【解决方案2】:
正如您已经注意到的,没有直接的方法或函数可以基于字符串创建 MD5 散列(没有用于 PS 的额外工具或模块)。但是,您可以使用 MemoryStream 来执行此操作:
$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
我在 https://infosecscout.com/get-md5-hash-in-powershell/ 上找到了这个不错的示例,其中还包含有关此主题的更多信息。
如果您想要使用 PowerShell 扩展的更简单方法,您可以在以下模块中使用 Get-Hash cmdlet:https://github.com/Pscx/Pscx