Windows 10でファイルの同一性をハッシュ値(チェックサム)で確認する方法

Windows 10でファイルの同一性をハッシュ値(チェックサム)で確認する方法

Webサイトなどで配布されているファイル(特に大容量のイメージファイルなど)は、ダウンロード時に破損したり、改ざんされる可能性があるため、ファイルの「ハッシュ値(チェックサム)」が掲載されていることがあります。

ファイルのハッシュ値は、ファイルの内容をアルゴリズムに基づいて計算し、固定長のデータに変換したもので、通常は16進数で表記されます。

たとえば、CentOS Linuxの場合だと、イメージファイルのダウンロードサイトにファイルのハッシュ値を記述したファイルが用意されています。

https://ftp.riken.jp/Linux/centos/7.9.2009/isos/x86_64/sha256sum.txt

Windows 10でファイルの同一性をハッシュ値(チェックサム)で確認する方法

このハッシュ値は、ファイルの内容が1bit違っているだけでも大きく異なるため、ダウンロードしたファイルのハッシュ値と、Webサイトに掲載されているハッシュ値を比較することで、ダウンロードしたファイルの同一性(整合性)をチェックできます。

ファイルのハッシュ値を確認する場合、サードパーティーのツールを利用して確認することもできますが、Windows 10なら標準搭載のコマンドで確認できます。

そこでここでは、Windows 10の標準コマンドでファイルのハッシュ値を確認する方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1903

Windowsコマンドで確認する

Windowsコマンドでファイルのハッシュ値を確認する場合は「certutil」コマンドを利用します。

例として「CentOS-7-x86_64-Minimal-1810.iso」をダウンロードして、ファイルのハッシュ値を比較してみます。

Webサイトに掲載されているハッシュ値とアルゴリズムは、次のとおりです。

sha256: 38d5d51d9d100fd73df031ffd6bd8b1297ce24660dc8c13a3b8b4534a4bd291c

ダウンロードしたISOイメージファイルのハッシュ値を求めるには、次のようにコマンドを実行します。

> certutil -hashfile CentOS-7-x86_64-Minimal-1810.iso sha256

コマンドを実行すると、以下のようにハッシュ値が表示され、Webサイトに掲載されているハッシュ値と同一であることが確認できます。

SHA256 ハッシュ (対象 CentOS-7-x86_64-Minimal-1810.iso):
38d5d51d9d100fd73df031ffd6bd8b1297ce24660dc8c13a3b8b4534a4bd291c
CertUtil: -hashfile コマンドは正常に完了しました。

PowerShellコマンドレットで確認する

PowerShellコマンドレットでファイルのハッシュ値を確認する場合は「Get-FileHash」コマンドレットを利用します。

ダウンロードしたISOイメージファイルのハッシュ値を求めるには、次のようにコマンドを実行します。

> Get-FileHash -Algorithm sha256 CentOS-7-x86_64-Minimal-1810.iso

コマンドを実行すると、以下のようにハッシュ値が表示され、Webサイトに掲載されているハッシュ値と同一であることが確認できます。

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          38D5D51D9D100FD73DF031FFD6BD8B1297CE24660DC8C13A3B8B4534A4BD291C       E:\CentOS-7-x86_64-Minimal-1810.iso

あとがき

Windows環境で何かしたいとき、すぐにサードパーティのツールに手を出す前に、標準機能で何とかできないか調べてみると、意外に標準機能で事足りることもありますよ。