首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在powershell中不内置Get-FileHash cmdlet的情况下获取校验和

在powershell中不内置Get-FileHash cmdlet的情况下获取校验和
EN

Stack Overflow用户
提问于 2017-06-14 16:15:40
回答 1查看 1.4K关注 0票数 1

我无法使用内置的cmdlet Get-FileHash生成校验和值,因为Powershell的版本低于4。

是否有其他方法可以获取或验证文件的完整性?

EN

回答 1

Stack Overflow用户

发布于 2017-06-14 16:38:48

好的,让我们假设您有一个文件项(例如来自Get-ChildItem )

代码语言:javascript
运行
复制
$stream = new-object system.IO.FileStream($item.fullname, "Open", "Read", "ReadWrite")

您可以使用FileStream打开该文件以获得流对象。

然后,您可以使用其中一个Crypto类来计算其散列:

代码语言:javascript
运行
复制
if ($stream)
{
      $sha = new-object -type System.Security.Cryptography.SHA256Managed
      $bytes = $sha.ComputeHash($stream)
      $stream.Dispose()
      $stream.Close()
      $sha.Dispose()
      $checksum = [System.BitConverter]::ToString($bytes).Replace("-", [String]::Empty).ToLower();
}

最后,校验和是$checksum格式的,它是一个很好的字符串,可以用来进行比较:

代码语言:javascript
运行
复制
5989b3cdcff6a594b2b2aef7f6288f7727019c037515c2b10627721e707cf613

System.Security.Cryptography下,您有各种用于计算散列的类,您可以在这里看到可用的类:https://msdn.microsoft.com/en-us/library/system.security.cryptography(v=vs.110).aspx

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44539187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档