コマンドプロンプトやPowerShell でファイルのハッシュ値を計算する

ダウンロードしたファイルなどのハッシュ値を計算するとき、Windowsの標準機能を使う方法。

試した環境

以下におけるコマンドプロンプトPowerShell
Windows 10 1909
Windows Server 2016

書式

cmd/PS> certutil -hashfile <ファイルパス> [ハッシュアルゴリズム]

ハッシュアルゴリズムは、以下が指定できる。
 ・MD2
 ・MD4
 ・MD5
 ・SHA1
 ・SHA256
 ・SHA384
 ・SHA512
省略するとSHA1 になる。

アルゴリズムの一覧は、certutil -v -? で確認できる。


参考)certutil
docs.microsoft.com



以下、内容に「123」と書いたテキストファイルのハッシュ値を計算した例。

MD5
PS E:\> certutil -hashfile .\sample.txt MD5
MD5 ハッシュ (対象 .\sample.txt):
202cb962ac59075b964b07152d234b70
CertUtil: -hashfile コマンドは正常に完了しました。
SHA1
PS E:\> certutil -hashfile .\sample.txt SHA1
SHA1 ハッシュ (対象 .\sample.txt):
40bd001563085fc35165329ea1ff5c5ecbdbbeef
CertUtil: -hashfile コマンドは正常に完了しました。
SHA256
PS E:\> certutil -hashfile .\sample.txt SHA256
SHA256 ハッシュ (対象 .\sample.txt):
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
CertUtil: -hashfile コマンドは正常に完了しました。
SHA384
PS E:\> certutil -hashfile .\sample.txt SHA384
SHA384 ハッシュ (対象 .\sample.txt):
9a0a82f0c0cf31470d7affede3406cc9aa8410671520b727044eda15b4c25532a9b5cd8aaf9cec4919d76255b6bfb00f
CertUtil: -hashfile コマンドは正常に完了しました。
SHA512
PS E:\> certutil -hashfile .\sample.txt SHA512
SHA512 ハッシュ (対象 .\sample.txt):
3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
CertUtil: -hashfile コマンドは正常に完了しました。

0バイトのファイルを試すと・・・

以下のエラーが出る場合は、ファイルサイズが0の場合がある。
0バイトのテキストファイルなどで試すと確認できる。

PS E:\> certutil -hashfile sample.txt MD5
CertUtil: -hashfile コマンド エラーです: 0x800703ee (WIN32: 1006 ERROR_FILE_INVALID)
CertUtil: ファイルを格納しているボリュームが外部的に変更されたため、開かれているファイルが無効になりました。