いきさつ
Windows10でハッシュ値(MD5やSHA256など)を確認する方法をすぐ忘れてしまうのでやり方をメモしておく。
コマンドプロンプトから元々入っている標準機能を使って確認できる。
やり方
コマンドプロンプトを起動して certutil
コマンドを打つだけ。
ハッシュアルゴリズムは MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512 に対応している模様。(ヘルプで確認)
# 基本的な使い方
certutil -hashfile <調べたいファイル> <ハッシュアルゴリズム>
# 例
certutil -hashfile hoge.exe MD5
# ヘルプの表示
certutil -hashfile -?
実行例
“jdk-17_windows-x64_bin.exe” をダウンロードしてSHA256ハッシュ値を調べたい場合。

コマンドの応用
先の実行結果を見てみると2行目にハッシュ値が出力されている。通常はこの値とWebページに書かれているハッシュとを見比べてファイルの正当性をチェックするのだけど少し比べにくい。(それぞれの値をメモ帳などに貼り付けて比較すれば済む話なのだけど…)
実はコマンドを工夫することでワンライナー風に比較できる。
Powershellの構文にContentの任意の行を取得するものがあるのでこれを利用する。
# 構文
(Content)[N]
# 例 - hoge.txtから2行目を抽出
(gc hoge.txt)[1]
コマンドプロンプトからPowershellをコマンド引数付きで起動するには、powershell <psでの処理内容>
でよいみたいなので、certutil
の結果と期待されるハッシュ値を次のコマンドで並べて表示することができる。
echo
の中身は掲載されているWebページなどからコピー&ペーストする感じになる。(コマンドプロンプトでの貼り付けはキャレットを挿入位置まで移動させて右クリック)
powershell (certutil -hashfile <調べたいファイル> <ハッシュアルゴリズム>)[1]; echo "<期待されるハッシュ値>";
# 例
powershell (certutil -hashfile jdk-17_windows-x64_bin.exe SHA256)[1]; echo "f44a4e4d0c51e6208ab0419bdb2be8b0ad4e70b6e7016e251b9af3304ffcc1c1";
実行例
“jdk-17_windows-x64_bin.exe” をダウンロードしてSHA256ハッシュ値を調べたい場合。(余談だけど、ネタになっているJDK17のダウンロード元はこちら)

コメント