2011-02-14 18:38:56 +0000 2011-02-14 18:38:56 +0000
707
707

Windows 7上是否有一个内置的校验工具?

Windows 7上是否有内置的校验和/散列工具?

答案 (26)

1237
1237
1237
2015-04-06 15:21:26 +0000

CertUtil是一个预装的Windows工具,可以用来生成哈希校验和:

certUtil -hashfile pathToFileToCheck [HashAlgorithm]

HashAlgorithm选择。MD2 MD4 MD4 MD5 SHA1 SHA256 SHA384 SHA384 SHA512

因此,例如,下面的文件C:\TEMP\MyDataFile.img会生成一个MD5校验和:

CertUtil -hashfile C:\TEMP\MyDataFile.img MD5

要获得类似于*Nix系统的输出,你可以添加一些PowerShell魔法:

$(CertUtil -hashfile C:\TEMP\MyDataFile.img MD5)[1] -replace " ",""
201
201
201
2011-02-14 18:42:47 +0000
183
183
183
2009-12-30 05:15:56 +0000

我使用的是HashCheck最新版本),它将自身集成为文件的属性页,并包含一个上下文菜单,可以与哈希检查文件(SFV)进行比较。

85
85
85
2012-09-05 11:51:42 +0000

有一个微软的FCIV工具,Microsoft File Checksum Integrity Verifier 下载链接)。

79
79
79
2015-05-22 20:58:13 +0000

PowerShell 4及以上版本包含了 Get-FileHash cmdlet。

40
40
40
2016-01-11 21:31:41 +0000

新版的7-Zip还可以通过右键选择校验和(这个不包括MD5)。它有SHA-1SHA-256、CRC-32、CRC-64等。

24
24
24
2009-12-30 00:55:29 +0000

这里有一个我以前用过的,与资源管理器的 “属性 "对话框很好地集成了。夏天属性](http://www.frozenlogic.org/summerproperties.shtml)。它是**开源的**,也有一个**x64版本的**。

我也喜欢Safer Networking的FileAlyzer,它也提供了额外的功能。但仅仅就校验和而言,Summer Properties是轻量级的,也能胜任。

14
14
14
2011-02-14 19:45:15 +0000

我发现这个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
            }
        }
    }
}

来源。在PowerShell中计算SHA1](http://bradwilson.typepad.com/blog/2010/03/calculating-sha1-in-powershell.html)

它利用了.NET,我想你应该已经安装了.NET。

11
11
11
2016-10-19 01:33:24 +0000

我在这里添加这个只是因为我没有看到任何完整的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:\>

2019年更新:

自从Windows 8以来,certutil的输出似乎发生了变化,所以我以前的过滤器隔离哈希值的方法已经不起作用了。外来的空格也没有了—-在编写脚本时少了一件需要担心的事情。下面是新的可复制粘贴的演示:

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:\>

为了使其更有弹性,防止因certutil中的另一个变化而被破坏,我们应该寻找有非hex字符的行来过滤掉:[^0-9a-zA-Z]

C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF]"
12c542ef8c99cf3895ad069d31843a5210857fdc
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

为什么这个反hex regex会这么奇怪?请看 这个问题 来了解 findstr 中的 regex 范围是如何不能正常工作的。

请注意,powershell的默认值是SHA256,而certutil的默认值仍然是SHA1。所以在需要的地方明确指定你的算法。你可以像这样快速检查可用的选项:

&001

8
8
8
2013-03-17 20:26:52 +0000

Microsoft File Checksum Integrity Verifier](http://download.microsoft.com/download/c/f/4/cf454ae0-a4bb-4123-8333-a1b6737712f7/Windows-KB841290-x86-ENU.exe)_。下载后,解压文件,打开命令提示符,进入解压路径,然后输入以下命令:

fciv -md5 filepath\filename.extension

例如:

fciv -md5 d:\programs\setup.exe
7
7
7
2014-09-13 14:14:08 +0000

不幸的是,据我所知,微软的Sysinternals套件中包含一个很好的工具,叫做sigcheck**。

7
7
7
2016-05-24 09:59:53 +0000

根据pbarney的评论,建立一个批处理文件,将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

将其作为一个上下文菜单项:

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\""
4
4
4
2017-09-02 13:47:32 +0000

这只是一个cmd shell脚本,它使用了 tedr2的答案 ,但删除了多余的输出行和空格:

:: hash.cmd : Get a hash of a file
:: p1: file to be hashed
:: p2: Hash algorithm in UPPERCASE
:: p3: Output file

@setlocal
@for /f "tokens=*" %%a in (
'@certutil -hashfile %1 %2 ^|find /v "hash of file" ^|find /v "CertUtil"'
) do @(
  @set str=%%a
)
@set str=%str: =%
@echo %str%
@endlocal

4
4
4
2009-12-30 04:08:39 +0000

MD5上下文菜单](http://www.vonwangelin.com/md5/)正是这样做的。它在文件的上下文菜单中增加了一个* MD5 ***选项:

MD5上下文菜单是一个免费的Windows外壳扩展软件,可以显示所选文件的MD5哈希和。这是一个小小的下载(238 KB),包含了你需要的一切。

3
3
3
2012-11-18 00:01:54 +0000
2
2
2
2017-01-04 12:10:05 +0000

1.checksum

我用的是checksum命令行实用程序,

使用方法:

checksum [-t=sha1|sha256|sha512|md5] [-c=signature] [-f=]filepath


2. 命令行参数

  • -?, --help, -h, -f 打印出选项。
  • --file=VALUE, -t 文件名。不区分大小写。

3. 使用示例

# Check md5 for "E:\Саша Неотразима\Sasha-Irresistible.exe" file
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe"
342B45537C9F472B93A4A0C5997A6F52
# Check sha256
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256
F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
# Correct 41474147414741474147 sha256 hash or not?
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c 41474147414741474147
Error - hashes do not match. Actual value was 'F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4'
# One more attempt
SashaChernykh@DESKTOP-0G54NVG E:\Саша Неотразима
$ checksum -f "E:\Саша Неотразима\Sasha-Irresistible.exe" -t=sha256 -c F6286F50925C6CBF6CBDC7B9582BFF833D0808C04283DE98062404A359E2ECC4
Hashes match..
1
1
1
2009-12-30 00:57:03 +0000

像这样的东西。winmd5sum . 这个也不错。sendtoMD5—-右击,发送至………..,就能得到结果。

1
1
1
2017-06-26 19:14:09 +0000

这不是一个内置的工具,但它是一个非常好的选项 http://checksumcompare.sanktuaire.com

如果两个文件夹不同或相同,你可以通过文件和/或摘要来比较检查和。

1
1
1
2012-11-18 00:11:17 +0000

你可以使用MD5sums for Windows,下载量只有28 KB Cygwin,如果你想做的只是计算MD5哈希值的话,可能会显得有些多余。

1
1
1
2015-08-31 21:35:34 +0000

正确的答案当然是CertUtil (参见tedr2的答案)。

但我要加上Penteract的免费的文件校验和验证器,我认为它是最友好的程序之一。(免責聲明:我是Penteract的附屬公司)

它的一些優點:

  • 為你比較計算出來的和預期的哈希值。

Plus:免费、脱机(所以你不需要上传文件)、用户友好(拖入一个文件就能得到结果)、从开始菜单中启动(当你想在一年后使用它时,不需要再寻找下载的可执行文件)、支持MD5、SHA1、SHA256等。

1
1
1
2009-12-30 06:12:33 +0000

HashTab 3.0是一个免费的shell扩展,可以计算许多校验和,包括MD5。它作为一个新的选项卡集成在文件属性中。

1
1
1
2018-07-07 09:29:40 +0000

你可以试试msys2,它是这里

只需输入(算法)sum。(algorithm)就是你要使用的哈希算法,例如md5, sha1, sha256…..

与Cygwin不同的是,这个工具是可移植的,你只需要下载.zip文件,然后解压到你想去的地方就可以了。你可以通过简单的点击(msys2.exe)来使用它。

希望这个工具能帮到你。

-1
-1
-1
2014-09-08 18:50:39 +0000

好了,我做了一个程序](http://slorunnerstipsandtricks.blogspot.com/2014/05/file-hash-checker-v11.html)来计算一个文件的散列值。希望对你有帮助。

这个程序是做什么的?它可以计算出SHA-1散列值,SHA-384散列值,MD5散列值和SHA-256散列值。好了,就这样吧 :)

-1
-1
-1
2011-02-16 08:27:33 +0000

外面有100多个第三方工具。我用的是MD5Hash。对于下载的sfv文件,只需使用TeraCopy来验证哈希值。

-2
-2
-2
2014-08-22 19:44:02 +0000

对于一个在Windows或其他环境下工作的解决方案,使用Python。

1.安装Python—-Windows安装程序可以在https://www.python.org/downloads/

2.下载一个经过测试的cksum实现,例如 http://pastebin.com/raw.php?i=cKATyGLb —-将其内容保存到c:\cksum.py或任何你觉得方便的地方

然后执行校验:

python c:\cksum.py INPUTFILE

不像编译后的实用程序那么快,但与Unix cksum兼容,可以在任何地方运行。

-3
-3
-3
2014-06-16 22:08:04 +0000

我喜欢digestIT,虽然它似乎相当陈旧,可能没有维护。