首页 > 系统相关 >PowerShell 的 Get-FileHash 命令查询一个文件的所有上述哈希值(假设是 SHA256, MD5, SHA1, SHA384, 和 SHA512),你需要分别对每个算法运行该命令

PowerShell 的 Get-FileHash 命令查询一个文件的所有上述哈希值(假设是 SHA256, MD5, SHA1, SHA384, 和 SHA512),你需要分别对每个算法运行该命令

时间:2024-02-07 09:00:48浏览次数:44  
标签:SHA1 FileHash Get 命令 算法 哈希 SHA512 PowerShell

PowerShell 是一种跨平台的任务自动化解决方案,包含一个命令行外壳、脚本语言和配置管理框架。PowerShell 提供了用于计算文件哈希值的内置命令 Get-FileHashGet-FileHash 命令可以用来计算文件的哈希值,支持多种哈希算法。 ,Get-FileHash 支持以下几种哈希算法:

  1. SHA256:默认算法,提供了较好的安全性。
  2. MD5:较早的算法,现在不推荐使用,因为其安全性较低。
  3. SHA1:比MD5新,但是现在也被认为是不够安全的。
  4. SHA384:比SHA256更长的哈希值,提供更高的安全性。
  5. SHA512:比SHA384还要长的哈希值,提供最高的安全性。

 

如果在将 Get-FileHash 的输出重定向到文本文件时遇到哈希值显示不完整的问题,这通常是因为输出格式化的原因。为了确保哈希值在输出文件中完整显示,最好直接提取哈希值属性进行输出。以下是如何做到这一点的步骤:

1. 直接输出哈希值到文件

你可以只提取哈希值本身(通过访问 .Hash 属性),然后将这个值输出到文件,这样可以确保哈希值不会被截断。

powershellCopy Code
(Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512).Hash | Out-File -FilePath C:\output.txt

这条命令首先计算指定文件的 SHA512 哈希值,然后直接从结果对象中提取 Hash 属性的值(即哈希值字符串),最后将这个字符串写入 C:\output.txt 文件中。

2. 使用自定义格式化输出到文件

如果你还想在输出文件中包含算法名称和路径等信息,但又希望哈希值完整无缩略,可以使用自定义的 PowerShell 脚本片段来格式化输出内容。

powershellCopy Code
$fileHash = Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512
$outputString = "Algorithm: $($fileHash.Algorithm)`r`nHash: $($fileHash.Hash)`r`nPath: $($fileHash.Path)"
$outputString | Out-File -FilePath C:\output.txt

这段脚本首先计算文件的哈希值,并将结果存储在 $fileHash 变量中。然后,它构造一个包含算法、哈希值和路径的字符串($outputString),其中哈希值是完整的,没有被截断。最后,这个字符串被写入到指定的文件中。

这样,无论哈希值有多长,都可以确保在输出文件中完整地展示出来,同时还能包含一些额外的有用信息。

 

在 PowerShell 中,当你使用 Get-FileHash 命令获取文件的哈希值时,如果哈希值很长(如 SHA512),输出可能会被截断以适应控制台窗口的宽度。为了显示完整的哈希值,你可以尝试以下几种方法:

1. 增加控制台窗口的宽度

这是最简单的解决方案之一,尽管它可能不总是可行或方便。你可以尝试手动调整 PowerShell 窗口的宽度,使其足够宽,以便能够显示完整的哈希值。

2. 使用 Format-Table 命令的 -Wrap 参数

Format-Table 是 PowerShell 中用于格式化输出的一个命令,它有一个 -Wrap 参数,可以用来包装长文本,以便在下一行继续显示,而不是截断它。

powershellCopy Code
Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512 | Format-Table -AutoSize -Wrap

3. 使用 Format-Table 命令的 -AutoSize 参数

虽然 -AutoSize 参数主要用于自动调整列的宽度以适应内容,但它有时也可以帮助更好地显示长文本。

powershellCopy Code
Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512 | Format-Table -AutoSize

4. 直接输出哈希值属性

如果你只对哈希值本身感兴趣,可以直接选择 .Hash 属性,这样就会输出完整的哈希值,而不包含其他信息。

powershellCopy Code
(Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512).Hash

5. 输出到文件

另一个选项是将输出重定向到一个文本文件中,这样你就可以用文本编辑器打开它并查看完整的哈希值。

powershellCopy Code
Get-FileHash -Path "C:\Users\Administrator\Desktop\下载 (1).png" -Algorithm SHA512 | Out-File -FilePath C:\path\to\output.txt

请将 C:\path\to\output.txt 替换为你想要保存输出文件的实际路径。然后,你可以使用任何文本编辑器打开这个文件来查看完整的哈希值。

以上方法中的任何一个都可以帮助你查看到完整的哈希值,具体使用哪一个取决于你的个人偏好和具体情况。

 

你可以通过指定 -Algorithm 参数来选择这些算法中的任何一个。例如,如果你想为某个文件计算SHA512哈希值,可以使用如下命令:

powershellCopy Code
Get-FileHash -Path "C:\path\to\your\file.txt" -Algorithm SHA512

这会返回该文件的SHA512哈希值。

请注意,随着时间的推移,可能会有更多的哈希算法被添加到PowerShell中,或者一些算法可能因安全考虑而不再推荐使用。因此,建议查看最新的PowerShell文档或使用 Get-Help Get-FileHash 命令来获取最新信息。

 

要使用 PowerShell 的 Get-FileHash 命令查询一个文件的所有上述哈希值(假设是 SHA256, MD5, SHA1, SHA384, 和 SHA512),你需要分别对每个算法运行该命令。PowerShell 不提供直接查询所有哈希值的单一命令,但你可以通过编写一个简短的脚本来实现这一功能。

以下是一个示例脚本,它将为指定路径的文件计算所有提及的哈希值:

powershellCopy Code
# 指定文件路径
$filePath = "C:\path\to\your\file.txt"

# 定义支持的哈希算法列表
$hashAlgorithms = @("SHA256", "MD5", "SHA1", "SHA384", "SHA512")

# 遍历算法列表,为每种算法计算哈希值
foreach ($algorithm in $hashAlgorithms) {
    $hash = Get-FileHash -Path $filePath -Algorithm $algorithm
    Write-Output "$algorithm hash of `"$filePath`": $($hash.Hash)"
}

将上面的脚本保存到一个 .ps1 文件中或直接在 PowerShell 控制台中运行它。确保替换 $filePath 变量的值为你想要计算哈希值的文件的实际路径。这个脚本会遍历所有指定的哈希算法,为每一个算法输出对应的哈希值。

 

PowerShell 的 Get-FileHash 命令主要支持的哈希算法包括了你提到的 SHA256, MD5, SHA1, SHA384, 和 SHA512。这些算法是最常用且广泛支持的。

除了这些常见的算法,根据不同版本的 PowerShell 和 Windows 环境,可能还有其他哈希算法可用,但它们并不是 Get-FileHash 命令的标准选项。Get-FileHash 命令的设计初衷是提供一种简单方式来计算文件的哈希值,因此它只包含了一些最广泛使用的算法。

如果需要计算其他类型的哈希值,你可能需要依赖其他工具或自定义脚本来实现。例如,可以使用 .NET 类库中的加密功能来计算其他类型的哈希值。下面是一个使用 .NET 类库计算 RIPEMD-160 哈希值的示例:

powershellCopy Code
# 加载目标类
$ripemd160 = [System.Security.Cryptography.RIPEMD160Managed]::new()

# 计算哈希值
function Get-RipeMD160Hash($filePath) {
    $fileStream = [System.IO.File]::OpenRead($filePath)
    $hashValue = $ripemd160.ComputeHash($fileStream)
    $fileStream.Close()
    return [BitConverter]::ToString($hashValue) -replace '-', ''
}

# 使用函数
$filePath = "C:\path\to\your\file.txt"
$hash = Get-RipeMD160Hash $filePath
Write-Output "RIPEMD-160 hash of `"$filePath`": $hash"

请注意,RIPEMD-160 只是作为示例,而且在某些环境中可能不直接支持。此外,对于特定的哈希算法,你可能需要安装额外的软件或库。

 

在密码学和信息安全领域,除了上文提及的 SHA256, MD5, SHA1, SHA384, 和 SHA512 等哈希算法外,还存在许多其他的哈希函数。它们各自有不同的设计目的、安全性水平和应用场景。以下是一些其他的哈希算法,虽然这些可能不直接通过 PowerShell 的 Get-FileHash 命令支持,但它们在某些特定的应用中很重要:

  1. RIPEMD-160: 一种较旧的哈希函数,设计用于替代 MD4、MD5 和 RIPEMD。RIPEMD-160 输出为160位。

 

标签:SHA1,FileHash,Get,命令,算法,哈希,SHA512,PowerShell
From: https://www.cnblogs.com/suv789/p/18010544

相关文章

  • golang命令行cobra学习
    varrootCmd=&cobra.Command{Use:"ferry",Short:"-v",SilenceUsage:true,DisableAutoGenTag:true,Long:`ferry`,Args:func(cmd*cobra.Command,args[]string)......
  • UEFI Shell是Unified Extensible Firmware Interface(统一可扩展固件接口)的一部分,它是
    UEFIShell是UnifiedExtensibleFirmwareInterface(统一可扩展固件接口)的一部分,它是一种命令行界面,允许用户在计算机启动时直接与UEFI固件进行交互。UEFIShell提供了一些基本的命令和功能,可以用于管理系统设置、诊断问题、访问硬件信息等操作。为什么使用UEFIShell:系统维护:......
  • bcdedit是Windows操作系统中的一个命令行工具,用于查看和修改启动配置数据(BCD)。启动配
    bcdedit是什么bcdedit是Windows操作系统中的一个命令行工具,用于查看和修改启动配置数据(BCD)。启动配置数据存储重要的启动信息,包括启动加载程序和启动设置。这个工具主要由高级用户、系统管理员和开发人员使用,以调整与系统启动相关的各种参数。为什么使用bcdedit修改启动设置......
  • powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用power
    powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用powercfg命令,用户和系统管理员可以查询、更改、导出、导入电源计划设置,检查电池状态,以及分析系统能耗情况等。这个工具非常有用,尤其是在需要优化电池使用时间、调整电源计划以提高性能或节能时。为......
  • 软件测试学习笔记丨App端测试—adb命令启动页面
    一、包和Activity(活动页)的概念package包:是Android应用的唯一标志Activity活动页:Android应用页面,一个页面就是一个Activity二、获取当前的页面名方法一:先启动应用执行adb命令:adbshell"dumpsyswindow|grepmCurrentFocus"三、获取启动页面的activity先执行adb命令:win:a......
  • 软件测试学习笔记丨App端测试——adb命令介绍
    一、adb简介AndroidDebugBridge(Android调试桥)简称adbAndroidsdk中提供的用于管理模拟器或真机状态的工具命令行工具二、adb操作手机设备打开应用adbshellamstart-ncom.tencent.wework/.launch.LaunchSplashActivity传输文件点击,输入,滑动等硬件操作返回,回到首页性能指......
  • top命令使用
    top-06:43:10up28min,2users,loadaverage:1.18,0.73,0.54:这一行显示了当前时间(06:43:10),系统运行时间(28分钟),当前登录的用户数(2个用户),以及系统负载平均值(最近1分钟为1.18,5分钟为0.73,15分钟为0.54)。Tasks:254total,1running,253sleeping,0stopped,0zo......
  • Windows和浏览器的命令与快捷键
    目录一、运行常用命令二、cmd常用命令(cmd的命令是运行的命令的超集)三、Windows快捷键1、Win键2、Ctrl键3、Alt键4、F键四、浏览器快捷键五、关闭Windows防火墙、安全中心和自动更新一、运行常用命令1.基本命令cmd打开命令提示符(cmd命令行控制台)control......
  • git命令的基本使用
    目录一、概念二、git命令1、git初始配置全局的用户名、邮箱和密码2、git本地仓库常用操作3、git远程仓库常用操作4、git分支常用操作5、其他命令或操作三、注意事项1、gitpush命令出现403错误2、用SSH方式下载/克隆远程仓库3、.gitignore文件一、概念Git是一个用于管理源代码的......
  • PowerShell中,可以使用特定的命令来执行关机、重启和休眠等操作
    PowerShell中,可以使用特定的命令来执行关机、重启和休眠等操作。以下是这些操作的常用命令及其简要说明:关机(Shutdown)Stop-Computer用于关闭本地或远程计算机。示例:Stop-Computer若要强制关闭(不等待应用程序响应),可以添加 -Force 参数:Stop-Computer-Force重启(Re......