#author("2019-03-31T18:10:28+09:00","","")
#navi(../)
* PowerShellでファイルのハッシュ値を確認する方法 [#i95371a7]
Windowsのコマンドプロンプトには、Linuxにはある md5sum, sha1sum, shasum コマンドがなく、ハッシュ値を調べるコマンドがありませんでした。~
PowerShell v4から ''Get-FileHash'' コマンドレットが提供されたので、このコマンドレットで簡単にファイルのハッシュ値を確認できるようになりました。~
(Cygwinを使うという手もありますが…)

以下に''Get-FileHash''の使用例を記します。~
Windows10を使用し動作確認を行いました。

#htmlinsertpcsp(win-top.html,win-sp.html)
#contents
#htmlinsertpcsp(win-top.html,win-sp.html)

* 参考資料 [#mf70e43a]
Microsoft Developer Network
-[[Get-FileHash>https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.utility/Get-FileHash]]

* Get-FileHash を使ってみる。 [#f1e8af4c]
Get-FileHashを使ってみます。~

PostgreSQLのtarballをダウンロードしてハッシュ値を取得してみます。
#ref(01.png)
#br
上記のスクリーンショットを見ると、tarball(tar.gz)の他に.md5, .sha256があるのが確認できます。~
.md5, .sha256には、今回 ''Get-FileHash'' で算出するハッシュ値が格納されています。~
この値を確認することにより、ファイルが壊れずダウンロードできていることを確認したり、改ざんされていないかを確認することができます。

** Get-FileHash ファイル名 [#s6df7402]
ファイル名のみ指定したときの出力です。~
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

** アルゴリズムを指定する [#b65559c0]
使用できるアルゴリズムは、[[Get-FileHashのドキュメント>https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.utility/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 の使用例でした。

#htmlinsertpcsp(win-btm.html,win-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS