Windowsでチェックサムを作成しファイルの整合性を検証する方法

ファイルをダウンロードしてみたら、ファイルが壊れていたり変更されていたりすることがありましたか? ファイルの整合性を確認する最も良い方法は、ファイルのチェックサムまたはハッシュを検証することです。幸いなことに、Windowsでファイルのチェックサムを検証する方法はいくつかあります。

無料でWindowsでファイルのチェックサムを計算するための組み込みのWindowsツールやサードパーティのユーティリティを使用する方法を学びましょう。

この記事では、5つの異なるツールを使用してWindowsでチェックサムを作成する方法を学びます。最後まで読むと、Windowsでハッシュを作成する方法を確実に知ることができるはずです!

前提条件

この記事はハウツー記事なので、実際にやってみる方法を追います。この記事で使用するツールのいくつかは、組み込みのものまたはMicrosoftから提供されています。一部はサードパーティのソースからも提供されています。一緒に進むためには、少なくともWindows 10が動作するコンピューター、または最低限Windows Server 2012が必要です。

チェックサムを生成する各方法の前提条件は、必要に応じて提供されます。

ファイルのチェックサム整合性検証ツール(FCIV)

Microsoftのツールであるファイルのチェックサム整合性検証ツール(FCIV)は、元々Windows Server 2012 R2で導入され、すべての将来のバージョンで利用できます。

C:\Tools\fciv.exeにFCIVツールをインストールしたと仮定します。VSCodeUserSetup-x64-1.52.1.exeというファイルのMD5チェックサムを生成するために、以下のコマンドをコマンドプロンプトまたはPowerShellプロンプトで実行します。ファイルが他の場所にある場合は、適切に場所を変更してください。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe

FCIVコマンドを実行すると、以下のスクリーンショットに示されているような結果が表示されます。ご覧のように、fciv.exeコマンドはデフォルトで指定されたファイルのMD5ハッシュを生成します。

Computing an MD5 checksum in Windows using fciv.exe.

FCIVはMD5またはSHA-1のファイルハッシュの生成しかできません。

MD5チェックサムを計算したので、同じファイルのSHA-1チェックサムも生成しましょう。上記の例で使用したファイルのSHA-1チェックサムを生成するには、既存のコマンドの末尾にsha1オプションを追加します。以下のスクリーンショットに示されているように、同じファイルのSHA-1ハッシュが生成されます。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -sha1
Generating SHA-1 checksum in Windows using fciv.exe.

お疲れ様でした!MD5チェックサムとSHA-1チェックサムの両方を作成しました。では、MD5ハッシュ値とSHA-1ハッシュ値の両方を同時に生成してみましょう。sha1オプションの代わりにbothを使用します。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -both

生成されたハッシュ値はMD5とSHA-1としてラベル付けされます。bothパラメータを使用することで、MD5とSHA-1のハッシュ値を同時に生成する際に時間を節約することができます。

Computing both MD5 and SHA-1 checksum using fciv.exe.

FCIVはファイルハッシュを計算する便利なツールですが、FCIVは古く、ハッシュアルゴリズムがMD5とSHA-1に限定されています。Microsoftは公式にFCIVをサポートしていないコマンドラインツールと宣言しています。それにもかかわらず、他のツールがない場合には、FCIVは優れた代替手段として機能します。

この時点で、fciv.exeツールを使用してMD5およびSHA-1ハッシュ値を作成しました。これまでのところどう思いますか?次のツールを学ぶ準備ができていると思います。

Certutilを使用する

Certutilは、Windowsでファイルのチェックサムを生成するためのもう一つの優れたツールです。正確なプログラム名はcertutil.exeで、そのまま使用できます。

certutil.exeの主な目的は証明書ですが、certutil.exeには、Windowsで次のハッシュアルゴリズムを使用してファイルのチェックサムを作成する機能があります:

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

それでは、どのように機能するか見てみましょう。

PowerShellまたはコマンドプロンプトを起動して、以下に示す構文を使用してファイルのチェックサムを計算します。

certutil.exe -hashfile [Path to File] [Hash Algorithm]

以下の例では、certutil.exeはファイルC:\downloads\VSCodeUserSetup-x64-1.52.1.exeのSHA-256ハッシュを生成し、その結果をスクリーンショットで示しています。

certutil.exe -hashfile "C:\downloads\VSCodeUserSetup-x64-1.52.1.exe" SHA256
Using certutil.exe to create a file checksum.

これで、certutil.exeを使用してファイルのチェックサムを作成する方法を知りました。練習として、他の利用可能なすべてのアルゴリズムを使用してファイルのハッシュ値を生成してみてください。次に、Get-FileHashとPowerShellを使用してファイルのハッシュを生成する方法を学びます。

ハッシュアルゴリズム(SHA-256など)は、SSL証明書を作成する際にも使用されることをご存知でしたか?

PowerShellのGet-FileHashコマンドレットを使用してください

この記事の最初から、Windowsでファイルのチェックサムを作成するためのコマンドラインツールについて読んできました。さらに学ぶべきコマンドラインツールがあります。それはGet-FileHashPowerShellコマンドレットです。

Get-FileHashを使用する前に、利用可能なパラメータについての構文を以下に参照してください。対象のファイルを指定するためにPathパラメータを使用し、どのハッシュアルゴリズムを使用するかを示すためにAlgorithmパラメータを使用します。

Get-FileHash -Path [path to file] -Algorithm [Hash Algorithm]

Get-FileHashで利用可能なハッシュアルゴリズムは以下の通りです。FCIVやCertUtilとは異なるハッシュアルゴリズムの選択肢があることに気付くでしょう。また、MD1やMD4などの古くて脆弱なアルゴリズムはもはや含まれていません。

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

以下のコマンドは、SHA-256アルゴリズムを使用してファイルVSCodeUserSetup-x64-1.52.1.exeのハッシュ値を計算します。必要に応じてファイルパスを変更して、以下のコードをPowerShellでコピーして実行してください。

Get-FileHash -Path C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -Algorithm sha256

以下のスクリーンショットに示されているように、Get-FileHashコマンドは、-Algorithm sha256パラメータで指定された通りに、ファイルのSHA-256ハッシュを計算しました。

Using Get-FileHash to compute the SHA-256 checksum of a file.

異なるアルゴリズムを使用してファイルのチェックサムを計算したい場合は、Algorithmパラメータの値を変更するだけで済みます。きっとGet-FileHashを使用してファイルのSHA-512チェックサムを作成できると思います!

複数のファイルのハッシュを同時に生成する

Get-FileHashを使用すると、複数のファイルのチェックサムを同時に生成することができます。以下の例のコードでは、ファイルパスのリストを$files変数に格納しています。次に、Get-FileHash$files変数を使用して各ファイルのSHA-256チェックサムを計算します。

$files = @(
    'C:\downloads\PowerShell-7.1.0-win-x64.msi',
    'C:\downloads\VSCodeUserSetup-x64-1.52.1.exe'
)
Get-FileHash -Path $files -Algorithm sha256
Using Get-FileHash to compute the hash values for each file stored in the $files array.

ファイルが含まれているフォルダのハッシュを生成する必要がある場合は、$files配列を手動で作成する代わりに、Get-ChildItemコマンドレットを使用して指定されたフォルダ内のファイルのリストを取得します。

以下のコマンドでは、Get-ChildItemコマンドレットがc:\downloadsフォルダ内のファイルのリストを取得します。その結果はPowerShellパイプラインを介してGet-FileHashコマンドレットに渡され、各ファイルのSHA-256ハッシュ値が計算されます。

(Get-ChildItem C:\downloads).Fullname | Get-FileHash -Algorithm sha256

ファイルのサイズによって、チェックサムの生成にかかる時間は異なります。この例では、8GBのISOファイルのチェックサムを計算するのに約20秒かかりました。結果は以下のスクリーンショットと似ているはずです。

Using Get-ChildItem and Get-FileHash to compute the hash values for each file in a folder.

Windowsでサードパーティのツールを使用してファイルのチェックサムを作成する

Windowsの組み込みツールだけではファイルのチェックサムを生成するのに十分ではない場合、サードパーティのツールが利用できます。すべてのサードパーティのツールが無料ではありませんが、いくつかの無料で人気のあるユーティリティが以下に示されています。

7-Zip

コマンドラインの使用に飽きて、Windowsでファイルのチェックサムを作成するためのグラフィカルなツールをお探しですか? 7-Zipは、ファイルのハッシュ値を生成することができる人気のある無料のファイル圧縮ツールです。

コンピュータに7-Zipをインストールすると、ファイルのチェックサムを生成するためのコンテキストメニューオプションが自動的に追加されます。ファイルのハッシュ値を取得するには、次の手順に従ってください:

  1. チェックサムを生成するファイルを右クリックします。
  2. 利用可能なハッシュアルゴリズムをリストするために、CRC SHAメニューオプションを選択します。
  3. 最後に、使用したいハッシュアルゴリズムをクリックします。

以下の例では、アスタリスク(*)オプションがすべての利用可能なアルゴリズムを使用してファイルのハッシュ値を表示します。簡単ですね!

Using the 7-Zip context menu to calculate a file’s checksum in Windows.

次に、7-Zipの代わりとして、複数のファイルのチェックサムを生成するHashMyFilesツールの使用方法を学びましょう!

HashMyFiles

コマンドラインや右クリックを忘れてください。 HashMyFiles は、ドラッグアンドドロップを使用して単一のファイル、複数のファイル、またはディレクトリ全体のチェックサムまたはハッシュ値を作成できます。

HashMyFilesプログラムを起動し、ハッシュを生成するためにファイルまたはフォルダをHashMyFilesのメインウィンドウにドラッグします。以下に示すように、メインウィンドウにはファイルと関連するハッシュがテーブル形式で表示され、詳細情報はプロパティウィンドウで利用できます。

Using HashMyFiles to get the file hash of multiple files by using drag and drop

さらに、HashMyFilesはハッシュまたはチェックサム値をHTMLレポートまたはタブ区切りファイルにエクスポートすることもできます。このエクスポート機能は、ファイルのチェックサム値の記録を保持したい場合に便利です。

次のステップ

この記事では、Windowsでファイルのチェックサムを作成するためのいくつかの方法を学びました。Microsoftには、certutil.exeGet-FileHashなどの組み込みのコマンドラインツールがあります。

また、無料で比較的簡単に使用できるサードパーティのツールもあります。ファイルのハッシュ値を生成するためのツールの選択に関係なく、ハッシュアルゴリズムごとにコンセプトと結果は同じです。

次は何ですか?おそらく、この記事で学んだツールのいずれかを使用して、重要なファイルのチェックサムインベントリを作成して、スクリプティングスキルを試してみることです。

Source:
https://adamtheautomator.com/checksum-windows/