小智 1358
CertUtil是预安装的 Windows 实用程序,可用于生成哈希校验和:
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
Run Code Online (Sandbox Code Playgroud)
哈希算法选择: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
因此,例如,以下内容为文件生成 MD5 校验和
C:\TEMP\MyDataFile.img:
CertUtil -hashfile C:\TEMP\MyDataFile.img MD5
Run Code Online (Sandbox Code Playgroud)
要获得类似于 *Nix 系统的输出,您可以添加一些 PowerShell 魔法:
$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
Run Code Online (Sandbox Code Playgroud)
Tob*_*tat 223
有一个内置实用程序,如this other answer中所指定。
但是,您可能希望使用这个名为HashTab 的免费软件应用程序,它通过注册一个……嗯,文件属性对话框中的选项卡,与 Windows 资源管理器巧妙地集成在一起。它很甜。
And*_*ore 197
我正在使用HashCheck(最新版本),它将自身集成为文件的属性页,并包含一个上下文菜单来与哈希检查文件 (SFV) 进行比较。
它是免费的,而且源代码是可用的。

Chr*_*ong 94
PowerShell 版本 4 及更高版本包括Get-FileHash cmdlet。
powershell get-filehash -algorithm md5 <file_to_check>
Run Code Online (Sandbox Code Playgroud)
使用doskey制作一个更容易记住的持久别名。
doskey sha1sum=powershell get-filehash -algorithm sha1 "$1"
doskey md5sum=powershell get-filehash -algorithm md5 "$1"
Run Code Online (Sandbox Code Playgroud)
cre*_*tor 87
有来自 Microsoft 的 FCIV 实用程序,Microsoft File Checksum Integrity Verifier (下载链接)。
Microsoft 文件校验和完整性验证器工具是不受支持的命令行实用程序,用于计算文件的 MD5 或 SHA1 加密哈希。
它没有在系统要求中显示 Windows 7,但我刚刚在 Windows 8 中使用它并且它工作正常。
Chr*_*Rea 24
这是我之前使用过的,它与 Explorer 的“属性”对话框很好地集成在一起:Summer Properties。它是开源的,还有一个x64 版本。

我也喜欢 Safer Networking 的FileAlyzer,它也提供了额外的功能。但就校验和而言,Summer Properties 是轻量级的并且可以完成这项工作。
小智 16
Nirsoft 的HashMyFiles是一款小型实用程序,可让您计算系统中一个或多个文件的 MD5 和 SHA1 哈希值。您可以轻松地将 MD5/SHA1 哈希列表复制到剪贴板,或将它们保存到 text/html/xml 文件中。
HashMyFiles 也可以从 Windows 资源管理器的上下文菜单中启动,并显示所选文件或文件夹的 MD5/SHA1 哈希值。

HashMyFiles 是免费软件且可移植。
Ami*_*idu 15
我在这里添加这个只是因为我没有看到任何完整的 powershell 示例,准备复制粘贴:
C:\> powershell "Get-FileHash %systemroot%\system32\csrss.exe"
Algorithm Hash
--------- ----
SHA256 CB41E9D0E8107AA9337DBD1C56F22461131AD0952A2472B4477E2649D16E...
C:\> powershell -c "(Get-FileHash -a MD5 '%systemroot%\system32\csrss.exe').Hash"
B2D3F07F5E8A13AF988A8B3C0A800880
C:\> CertUtil -hashfile "%systemroot%\system32\csrss.exe" MD5 | findstr -v file
b2 d3 f0 7f 5e 8a 13 af 98 8a 8b 3c 0a 80 08 80
C:\>
Run Code Online (Sandbox Code Playgroud)
certutil自 Windows 8 以来,输出似乎发生了变化,因此我用于隔离散列的旧过滤器不再起作用。多余的空间也消失了 - 编写脚本时无需担心的一件事。这是新的可复制粘贴的演示:
C:\>CertUtil -hashfile "%systemroot%\system32\csrss.exe" | findstr -v ash
0300c7833bfba831b67f9291097655cb162263fd
C:\>CertUtil -hashfile "%systemroot%\system32\csrss.exe" SHA256 | findstr -v :
a37d616f86ae31c189a05b695571732073b9df97bf5a5c7a8ba73977ead3e65b
C:\>ver
Microsoft Windows [Version 10.0.16299.1451]
C:\>
Run Code Online (Sandbox Code Playgroud)
为了使这对破损更有弹性从另一个未来的变化certutil,我们应该寻找与非十六进制字符线,以过滤掉:[^0-9a-zA-Z]。这也应该使其对其他语言环境和语言更安全。
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF ]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Run Code Online (Sandbox Code Playgroud)
为什么那个实际的反十六进制正则表达式如此奇怪?请参阅此问题以了解正则表达式范围findstr如何无法正常工作。为了向后兼容旧certutil版本,我包含了一个额外的空格字符,但它是可选的。
请注意,powershellGet-FileHash默认值为 SHA256,但certutil仍默认为 SHA1。因此,在需要的地方明确指定您的算法。您可以像这样快速检查可用选项:
C:\>powershell -c "Get-FileHash -?" | findstr gori
Get-FileHash [-Path] <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
Get-FileHash -LiteralPath <string[]> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 |
Get-FileHash -InputStream <Stream> [-Algorithm {SHA1 | SHA256 | SHA384 | SHA512 | MACTripleDES | MD5 | RIPEMD160}]
C:\>certutil -hashfile -v /? | findstr gori
CertUtil [Options] -hashfile InFile [HashAlgorithm]
Hash algorithms: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512
Run Code Online (Sandbox Code Playgroud)
小智 14
我找到了这个 PowerShell 脚本:
param([switch]$csv, [switch]$recurse)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null
$sha1 = new-Object System.Security.Cryptography.SHA1Managed
$pathLength = (get-location).Path.Length + 1
$args | %{
if ($recurse) {
$files = get-childitem -recurse -include $_
}
else {
$files = get-childitem -include $_
}
if ($files.Count -gt 0) {
$files | %{
$filename = $_.FullName
$filenameDisplay = $filename.Substring($pathLength)
if ($csv) {
write-host -NoNewLine ($filenameDisplay + ",")
} else {
write-host $filenameDisplay
}
$file = [System.IO.File]::Open($filename, "open", "read")
$sha1.ComputeHash($file) | %{
write-host -NoNewLine $_.ToString("x2")
}
$file.Dispose()
write-host
if ($csv -eq $false) {
write-host
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它利用了我假设您已经安装的 .NET
小智 8
Microsoft 文件校验和完整性验证程序。它可以计算MD5和SHA-1哈希值。
下载,解压缩文件,然后打开命令提示符,转到解压缩的路径,然后键入以下命令:
fciv -md5 filepath\filename.extension
Run Code Online (Sandbox Code Playgroud)
例如:
fciv -md5 d:\programs\setup.exe
Run Code Online (Sandbox Code Playgroud)
小智 7
基于 pbarney 对最高票答案的评论的批处理文件:这会将拖到批处理文件上的任何文件的 MD5 哈希复制到剪贴板:
@ECHO OFF
FOR /f "tokens=*" %%i IN ('@certutil -hashfile %1 MD5 ^| find /v "hash of file" ^| find /v "CertUtil"') DO SET r=%%i
SET r=%r: =%
ECHO %r% | clip
Run Code Online (Sandbox Code Playgroud)
要使其成为上下文菜单项:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Get MD5]
@="Copy MD5 to Clipboard"
[HKEY_CLASSES_ROOT\*\shell\Get MD5\command]
@="\"C:\\<PATH TO BAT FILE>\\getMD5.bat\" \"%1\""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
950440 次 |
| 最近记录: |