在 PowerShell 中获取 MD5 校验和
MD5 是一种散列算法,尽管存在较弱的安全问题,但仍被广泛使用。我们可以使用它来加密字符串或获取文件的指纹。
Windows PowerShell 提供了一个 cmdlet 来为文件生成 MD5 哈希。该 cmdlet 还可以通过打开流并对其进行散列来获取字符串的 MD5 散列。
本文将了解哈希算法并在 PowerShell 中使用它。
在 PowerShell 中使用 MD5 哈希算法
即使出于安全考虑不推荐使用 MD5,它仍然是检查文件传输是否被篡改或成功的绝佳解决方案。
首先,获取传输前后文件的 MD5 指纹。
如果结果相同,则说明文件传输未被篡改。如果不是,它已损坏。
为此,我们将使用 Get-FileHash
cmdlet。Get-FileHash
cmdlet 显示文件的哈希值。
它默认使用 SHA256 算法,但我们可以添加一个额外的参数来使用 MD5。
Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
我们也可以将它与流而不是文件路径一起使用。
Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
这是一个例子:
Get-FileHash C:\Windows\explorer.exe -Algorithm MD5
输出:
Algorithm Hash Path
--------- ---- ----
MD5 3F786F7D200D0530757B91C5C80BC049 C:\Windows\explorer.exe
-Path
参数不是强制性的,所以我们不需要使用它。相反,我们给出文件路径并添加算法参数以使用 MD5 而不是 SHA256。
在脚本中使用 PowerShell,我们可以使用结果创建一个变量,并使用诸如 $variable.Hash
之类的哈希属性获取哈希值,以确保它与原始文件的值相同。
PowerShell 中的哈希字符串
不幸的是,在 PowerShell 中没有直接的函数或本机命令可以从字符串生成散列。
但是,可以将 Get-FileHash
与流参数一起使用,因此它是一种计算字符串散列的解决方案。
让我们直接从下面的代码片段开始:
$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
输出:
Algorithm Hash
--------- ----
MD5 D49019C7A78CDAAC54250AC56D0EDA8A
- 首先使用
$stringAsStream
创建一个新流。 - 然后使用
$writer
在流上写入。 - 最后,我们使用
Get-FileHash
对流内容进行哈希处理。
与本文第一节相比,唯一的变化是我们使用了 -InputStream
而不是 -Path
。
正如你在输出中看到的那样,我们得到了字符串的 MD5 哈希值。
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。