Windowsのコマンドプロンプトには、Linuxにはある md5sum, sha1sum, shasum コマンドがなく、ハッシュ値を調べるコマンドがありませんでした。
PowerShell v4から Get-FileHash コマンドレットが提供されたので、このコマンドレットで簡単にファイルのハッシュ値を確認できるようになりました。
(Cygwinを使うという手もありますが…)
以下にGet-FileHashの使用例を記します。
Windows10を使用し動作確認を行いました。
Microsoft Developer Network
Get-FileHashを使ってみます。
PostgreSQLのtarballをダウンロードしてハッシュ値を取得してみます。
上記のスクリーンショットを見ると、tarball(tar.gz)の他に.md5, .sha256があるのが確認できます。
.md5, .sha256には、今回 Get-FileHash で算出するハッシュ値が格納されています。
この値を確認することにより、ファイルが壊れずダウンロードできていることを確認したり、改ざんされていないかを確認することができます。
ファイル名のみ指定したときの出力です。
SHA256のハッシュ値が表示されていいます。
PS E:\work> dir ディレクトリ: E:\work Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2016/11/27 13:55 25172850 postgresql-9.6.1.tar.gz PS E:\work> Get-FileHash .\postgresql-9.6.1.tar.gz Algorithm Hash Path --------- ---- ---- SHA256 B85275DA86E23981591865CE184EA5911F77506888215B334929B818EB6BFB61 E:\work\postgresql-9.6.1.tar.gz
ちなみにLinuxなどのコマンドの場合は、英字は小文字になります。
$ sha256sum postgresql-9.6.1.tar.gz b85275da86e23981591865ce184ea5911f77506888215b334929b818eb6bfb61 *postgresql-9.6.1.tar.gz
なので、比較するのであれば、小文字に変換するtoLoewr()を呼び出せばよいでしょう。
PS E:\work> (Get-FileHash .\postgresql-9.6.1.tar.gz).Hash.toLower() b85275da86e23981591865ce184ea5911f77506888215b334929b818eb6bfb61
使用できるアルゴリズムは、Get-FileHashのドキュメントを参照してください。
以下、SHA256, MD5を使用してみます。
構文は以下のようになります。
Get-FileHash -Algorithm アルゴリズム ファイル名
以下、実行例です
PS E:\work> Get-FileHash -Algorithm md5 .\postgresql-9.6.1.tar.gz Algorithm Hash Path --------- ---- ---- MD5 EAA7E267E89EA1ED2693D2B88D3CD290 E:\work\postgresql-9.6.1.tar.gz PS E:\work> Get-FileHash -Algorithm sha256 .\postgresql-9.6.1.tar.gz Algorithm Hash Path --------- ---- ---- SHA256 B85275DA86E23981591865CE184EA5911F77506888215B334929B818EB6BFB61 E:\work\postgresql-9.6.1.tar.gz
以上、PowerShellでファイルのハッシュ値を確認することができる Get-FileHash の使用例でした。