在 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 哈希值。
相关文章
在 PowerShell 中运行带参数的 exe 文件
发布时间:2024/03/03 浏览次数:160 分类:编程语言
-
在本文中,我们只关注带参数运行 exe 文件的方式,因为如果它已经在 Windows PATH 中,则正常的 exe 文件执行(不带参数)非常简单。
在 PowerShell 中运行 CMD 命令
发布时间:2024/03/03 浏览次数:69 分类:编程语言
-
本文介绍了在 Windows PowerShell 脚本环境中的 PowerShell 中运行 cmd 旧命令的不同方法。
在 PowerShell 中向多个收件人发送电子邮件
发布时间:2024/03/03 浏览次数:95 分类:编程语言
-
本文将演示使用 PowerShell 编写和使用哪些命令向多个收件人发送电子邮件。
在 PowerShell 中显示消息框
发布时间:2024/03/03 浏览次数:103 分类:编程语言
-
本文将讨论名为 Message Boxes 的 PowerShell GUI 的重要功能,我们将学习如何使用 PowerShell 编写和输出它们。
在 PowerShell 中输出信息性消息
发布时间:2024/03/03 浏览次数:74 分类:编程语言
-
本文将区分多个写入命令,例如写入信息、警告和错误消息,并提供我们可以在 PowerShell 中何时何地使用它们的情况。