CertUtil は、ハッシュチェックサムを生成するために使用できるプレインストールされた Windows ユーティリティです:
certUtil -hashfile pathToFileToCheck [HashAlgorithm]
ハッシュアルゴリズムの選択。MD2 MD4 MD5 SHA1 SHA256 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 " ",""
しかし、ファイルのプロパティダイアログにタブを登録することで、Windowsエクスプローラとうまく統合されているHashTabというフリーウェアのアプリを使いたいと思うかもしれません。これはなかなかいいですね。
私が使っているのは、ファイルのプロパティページとして自分自身を統合し、ハッシュチェックファイル(SFV)と比較するためのコンテキストメニューが含まれている HashCheck 最新版 ) です。
無料でソースも公開されているので、ぜひ使ってみてください。
MicrosoftからのFCIVユーティリティ、 Microsoft File Checksum Integrity Verifier download link )があります。
Microsoft File Checksum Integrity Verifierツールは、ファイルのMD5またはSHA1暗号ハッシュを計算するサポートされていないコマンドラインユーティリティです。
PowerShell バージョン 4 以降には Get-FileHash コマンドレットが含まれています。
powershell get-filehash -algorithm md5 <file_to_check>
(https://stackoverflow.com/questions/32003/tool-for-commandline-bookmarks-on-windows) [ doskey ]&003 を使用して、覚えやすい永続的なエイリアスを作成します。
新バージョンの 7-Zip では、右クリックするだけでチェックサムを選択できるようにもなっています(これには MD5 は含まれていません)。SHA-1 ](http://en.wikipedia.org/wiki/SHA-1)、[ SHA-256 ](http://en.wikipedia.org/wiki/SHA-2)、CRC-32、CRC-64などがあります。
エクスプローラーの “プロパティ "ダイアログにうまく統合されている、以前に使用したものを以下に示します。 夏のプロパティ . これはオープンソースで、x64版もあります。
Safer NetworkingのFileAlyzerも好きです。しかし、チェックサムのためだけに、Summer Properties は軽量で仕事をしてくれます。
私はこの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を活用しています。
私は、コピーペーストの準備ができている任意の完全に動作するpowerhellの例を見なかったので、私はここにのみこれを追加しています:
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:\>
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:\>
将来の certutil
の別の変更による破損に対してこれをより回復力のあるものにするために、私たちはフィルタリングするためにヘックス文字以外の文字を含む行を探すべきです: [^0-9a-zA-Z]
. これは他のロケールや言語に対してもより安全なものになるはずです。007 の正規表現範囲がどのように機能しないのかについては この質問 を参照してください。古いバージョンの findstr
との下位互換性のために余分なスペース文字を入れましたが、これはオプションです。
powershell の certutil
のデフォルトは SHA256 であることに注意してください。ですから、必要なところでアルゴリズムを明示的に指定してください。このように利用可能なオプションをすぐに確認することができます:
C:\>CertUtil -hashfile "C:\windows\fonts\arial.ttf" | findstr -vrc:"[^0123-9aAb-Cd-EfF]"
12c542ef8c99cf3895ad069d31843a5210857fdc
Microsoft File Checksum Integrity Verifier ](http://download.microsoft.com/download/c/f/4/cf454ae0-a4bb-4123-8333-a1b6737712f7/Windows-KB841290-x86-ENU.exe)_。それは、[MD5](http://en.wikipedia.org/wiki/MD5)と[SHA-1](http://en.wikipedia.org/wiki/SHA-1)ハッシュ値を計算することができます。
ダウンロードして、ファイルを抽出し、コマンドプロンプトを開き、抽出されたパスに移動し、次のコマンドを入力します。
残念ながら、私が知っているわけではありませんが、Microsoftの Sysinternals スイートには、* sigcheck **という素敵なツールが含まれています。
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\""
これは、 tedr2の答え を使用していますが、余計な出力行とスペースを削除するcmdシェルスクリプトです:
:: 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
出力は、必要に応じてファイルにリダイレクトすることができます:
@echo %str% > %3
例:
sys> \dev\cmd\hash.cmd MyApp.dll SHA1
8ae6ac1e90ccee52cee5c8bf5c2445d6a92c0d4f
MD5 コンテキスト メニュー ](http://www.vonwangelin.com/md5/) はまさにこれを行います。それはファイルのコンテキストメニューに* MD5 **オプションを追加します:
MD5コンテキストメニューは、選択したファイルのMD5ハッシュサムを表示するWindows用のフリーウェアのシェル拡張です。それは小さなダウンロード(238 KB)で、必要なものがすべて含まれています。
Cygwin ](http://cygwin.org)には、あなたが望むことをするべき`md5sum.exe`ユーティリティが含まれています。
私は checksum コマンドラインユーティリティを使用しています。
md5
, sha1
, sha256
をサポートしています。使用法:
チェックサム [-t=sha1|sha256|sha512|md5] [-c=署名] [-f=]ファイルパス
sha512
, -?
, --help
オプションをプリントアウトします。大文字小文字は区別されません。使用例 # 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..
これは組み込みのユーティリティではありませんが、非常に良いオプションです http://checksumcompare.sanktuaire.com
2つのフォルダが異なっていたり、同一であったりする場合、ファイルやサマリーでチェックサムを比較することができます。
あなたは MD5sums for Windows を使用することができます, 唯一の28 KB Cygwin のダウンロードはあなたがすべてのMD5ハッシュを計算したい場合はやりすぎかもしれません.
正解は、もちろん CertUtil です( tedr2 の回答 を参照)。
しかし、Penteract の無料の File Checksum Verifier は、最も使いやすいプログラムの一つだと思います。(免責事項: 私はPenteractと提携しています。)
その利点のいくつか:
計算されたハッシュと期待されるハッシュを比較します。
最小限の機能 - ファイルのコンテキストメニューに項目がなく、ファイルのプロパティに余分なタブがありません。
このプログラムの整合性を確認するために(中間者攻撃に対する) (https://en.wikipedia.org/wiki/Man-in-the-middle_attack) - 安全な接続でダウンロードします。
プラス:無料、オフライン(だからファイルをアップロードする必要はありません)、ユーザーフレンドリー(ファイルをドラッグして結果を得る)、スタートメニューから起動(今から1年後にそれを使用したいときにダウンロードした実行ファイルを探す必要はありません)、そしてMD5、SHA1、SHA256などをサポートしています。
HashTab 3.0 は、MD5を含む多くのチェックサムを計算するフリーのシェル拡張機能です。ファイルのプロパティに新しいタブとして統合されています。
さて、私はファイルからいくつかのハッシュを計算するための プログラム を作りました。お役に立てれば幸いです。SHA-1 ](http://en.wikipedia.org/wiki/SHA-1)ハッシュ、SHA-384ハッシュ、[ MD5 ](http://en.wikipedia.org/wiki/MD5)ハッシュ、[ SHA-256 ](http://en.wikipedia.org/wiki/SHA-2)ハッシュを計算します。まあ、そんなところですね :)
Windows や他の環境で動作するソリューションのためには、Python を使用してください。
Python をインストールしてください – Windows のインストーラは https://www.python.org/downloads/
テスト済みの cksum
の実装をダウンロードしてください。http://pastebin.com/raw.php?i=cKATyGLb ](http://pastebin.com/raw.php?i=cKATyGLb) – これの内容を保存して、c:\cksum.py
またはどこでも便利な
その後、チェックサムを実行するために:
python c:\cksum.py INPUTFILE
コンパイルされたユーティリティほど速くはありませんが、Unix cksum
と互換性があり、どこでも実行できます。