在MD5 Powershell中获取哈希值

问题描述 投票:0回答:2

我正在尝试创建一个脚本,可以获取我使用函数ChildItem获得的文件和目录的哈希MD5。我的剧本目前如下。为什么哈希的部分不起作用?

 $UserInput = Read-Host



 Get-ChildItem -Path $UserInput -Recurse  


function md5hash($UserInput)
{
    $fullPath = Resolve-Path $UserInput
    $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
    $file = [System.IO.File]::Open($fullPath,[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
    [System.BitConverter]::ToString($md5.ComputeHash($file))
    $file.Dispose()
}
powershell hash
2个回答
1
投票

作为单线:

Get-ChildItem -Path C:\Temp -Recurse -File | Get-Filehash -Algorithm MD5

1
投票
$someFilePath = "C:\foo.txt"
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($someFilePath)))

编辑:您的代码应该可以正常工作,甚至比我建议的更好,因为我的示例仅限于<2GB大小的文件。由于您的使用Stream,因此效率更高(不会首先将其全部加载到内存中),并且不会有大小限制。

您的文件路径必须是文件,因为您正在进行特定于文件的I / O调用...

© www.soinside.com 2019 - 2024. All rights reserved.