Windows PowerShellを使用してファイルハッシュを取得する

ファイルハッシュを取得することは非常に便利です。 これは、たとえば、バックアップされたファイルが破損したり変更されたりしないように(プロセスの前後にハッシュを生成することによって)、または重要なファイルを改ざんされないようにするために使用できます。

ダウンロードサイトにも表示される場合がありますが、使用は制限されています。 理由は簡単です。攻撃者がダウンロードファイルを変更した場合、Webサイトも同様に侵害される可能性があります。 これは、理論的には少なくとも、サイトに表示されるファイルハッシュが、ダウンロードの新しい悪意のあるバージョンに合わせて変更されたことを意味します。

過去にかなりの数のハッシュ関連プログラムをレビューしました。Windowsシェル拡張HashTabから、NirsoftのHashMyFiles、File Check MD5およびMD5 Check Utilityまで。

Windows PowerShellを使用してファイルハッシュを取得する

Windowsマシンでファイルのハッシュをすばやく生成する必要がある場合は、PowerShellを使用することもできます。

いくつかのハッシュプログラムほど快適ではないかもしれませんが、サードパーティのソフトウェアを必要としないネイティブ実装です。 たとえば、制限された環境や、これらのプログラムをダウンロードするためのインターネット接続がない場合に役立ちます。

ハッシュ生成はPowerShell 4.0に統合されました。 Windows 8.1およびWindows Server 2012 R2に含まれており、Windows 7 Service Pack 1、Windows Server 2012、およびWindows Server 2008 R2 Service Pack 1でも使用できます。

  1. WindowsキーをタップしてPowerShellと入力し、Enterキーを押して起動します。

メインコマンドはget-filehash FILEPATH 、たとえばget-filehash c:\ test.txtです。

Get-FileHashは、デフォルトでSha256アルゴリズムを使用します。 代わりに、-Algorithmパラメーターを使用して別のアルゴリズムを指定できます。

サポートされているもの:SHA1、SHA256、SHA384、SHA512、MACTripleDES、MD5、RIPEMD160

MD5とSHA1は安全であるとは見なされなくなりましたが、引き続きサポートされていることに注意してください。

したがって、Sha512ハッシュを生成するには、コマンドget-filehash -Algorithm Sha512 c:\ test.txtを使用します。

デフォルトのパスオプションの代わりに-LiteralPathまたは-InputStreamを使用することもできます。

  • LiteralPath: get-filehash -LiteralPath -Algorithm SHA512 c:\ test.txt。
  • InputStream get-filehash -InputStream -Algorithm SHA512ストリーム。

パスとリテラルパスの主な違いは、リテラルパスはワイルドカードをサポートせず、入力されたとおりに使用されることです。

CertUtil

CertUtilは、ファイルのハッシュを計算するために使用できる別のネイティブWindowsプログラムです。 コマンドプロンプトから、またはPowerShellを使用してプログラムを実行できます。

基本コマンドはcertutil -hashfile PATHです (例: certutil -hashfile c:\ example.txt)

ハッシュアルゴリズムも指定できます。 サポートされているのは、MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512です。 デフォルトのアルゴリズムはMD5です。

別のハッシュアルゴリズムを使用するには、コマンドの後に指定します(例: certutil -hashfile c:\ example.txt SHA512)

終わりの言葉

スクリプト内のコマンドを使用して、1回の操作で複数のファイルのハッシュを計算できます。 2つのネイティブツールget-filehashとcertutilは、Windowsでのハッシュの迅速な計算、およびスクリプトの使用に非常に便利です。 (Genbeta(スペイン語)経由)