Windows Tips

ダウンロードしたファイルが壊れていないか確かめる方法 (Windowsの場合)

投稿日:2016年9月21日 更新日:

ウェブサイト上から何かのファイルをダウンロードするとき、ダウンロードリンク周辺に「SHA1」/「SHA256」/「MD5」などといった文字とともに、ランダムな文字列が記載されていることがあります。

これは、ダウンロードの途中でファイルが壊れてしまっていたり、第三者によって改ざんされていないかを確かめるのに使います。

改ざんされていることは滅多にないとしても、特に何GBもあるような大きなファイルの場合、一部分が正常にダウンロードできないという現象が時々起こります。そんな時にも、ファイルが正常ダウンロードできているか確認する(基のファイルと同一のファイルかどうか確かめる)必要があります。

ハッシュ関数による改ざん検知の仕組み

18_53_25-windows7
  1. サーバー側で、ハッシュ関数(*1)を使い、ファイルの内容を基にして文字列を生成します。
  2. この文字列を公開します。
  3. このファイルをダウンロードします。
  4. ハッシュ関数を使い、このファイルの内容を基にして文字列を生成します。
  5. 2の文字列と同じ文字列が得られれば、正しいファイルであることが分かります。
*1 ハッシュ関数とは?

あるデジタルデータから一定の長さの文字列を生成するための関数・手順のことをハッシュ関数といいます。同じデータからは必ず同じ文字列が生成されます。また、生成された文字列から基のデータに復元することはできません。

ハッシュ関数には、「SHA1」/「SHA256」/「MD5」などいろいろな種類があります。

例としてプログラミング言語PHP のファイルをダウンロードして、ファイルが壊れていないか確認してみます。

1. ブラウザで PHPのダウンロードページ(Windows向け)にアクセスする

(1) ブラウザを開いて アドレスバーに http://windows.php.net/download/ と入力し、続けて Enterキーを押してこのURLのページにアクセスします。

16_29_35-php_for_windows_binaries

2. ファイルをダウンロードする

今回は、「VC14 x64 Non Thread Safe (2016-Sep-14 02:01:04)」をダウンロードします。

16_31_13-php_for-windows_-binaries

(1) Zip をクリックするとダウンロードが始まります。(今回は ホームフォルダ内の ダウンロード\test フォルダにダウンロードします)

(2) ここに、sha1: cd99b28cef84e0e5af6263d023c0d2d8aa37592f と書いています。

  • sha1 とは、ファイルの内容をランダムな文字列に変換する方式の名前です。
  • その方式を使って、ファイルの内容を変換した結果が cd99b28cef84e0e5af6263d023c0d2d8aa37592f という文字列です(ファイル提供者が変換作業をして得られた文字列です)。

ダウンロードが完了したら次に進みます。

3. PowerShell を起動する

(1) Windowsキー をタイプしてスタートメニューを表示し、続けて powershellとタイプします。
(2) 「Windows PowerShell」が表示されるので、ここをクリックして PowerShell を起動します。(通常、「Windows PowerShell」にフォーカスがあたっているはずなので、Enter を押すだけでもOKです)

15_07_00

4. PowerShell を使って SHA1の値を算出する

(1) cd .\Downloads\test\ と入力して Enter を押し、ファイルをダウンロードしたフォルダに移動します。

(2) ls と入力して Enter を押すとフォルダ内のファイルが一覧表示されます。

(3) 先程ダウンロードしたファイルが存在しているか確認します。

(4) Get-FileHash -Algorithm SHA1 .\php-7.0.11-nts-Win32-VC14-x64.zip と入力して Enter を押します。

  • これにより、ダウンロードしたファイルの内容から、SHA1というハッシュアルゴリズムを使って文字列を出力されます。
  • ハッシュ関数の種類は -Algorithm引数で指定します。SHA256であれば -Algorithm SHA256、MD5であれば -Algorithm MD5 と指定します。

(5) 出力された文字列が、ダウンロードページに記載されていた文字列と同じであることを確認します。

  • 同じであれば、ファイルは壊れていないことが分かります。
  • この長さの文字列を全て比較するのは大変なので、最初と最後のそれぞれ5文字くらいずつ比較してもよいと思います(ハッシュ関数は、ファイルの内容が少し違うだけでも大きく異なる文字列を出力するように作られているはずです)。
16_41_43-windows_powershell

まとめ

ファイルをダウンロードする際、ウェブサイトにハッシュ関数による文字列が記載されている場合は、なるべくファイルが壊れていないか・改ざんされていないかをチェックしましょう。

📂-Windows Tips
-

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windows 10 のクイックアクセスにクイックにアクセスする

目次1. はじめに2. クイックアクセスを利用する手順3. フォルダをクイックアクセスにピン留めする4. おわりに 1. はじめに Windows 10 のファイルエクスプローラーに、「クイックアクセ …

Windows

コンテキストメニューに任意のアプリケーションを追加する

Windows 10 で、コンテキストメニュー(ファイルを右クリックすると表示されるメニュー)に任意のアプリケーションを追加する方法を紹介します。

Windows

Windows 10 でスクリーンショットを撮る方法(キャプチャ機能)

Windows 10 においてスクリーンショットを撮る(キャプチャする)方法について説明します。

Windows

【Windows 10 】タスクバー上の日付に「曜日」を表示する

Windows 10 のタスクバー上には、日付と時刻が表示されます。 デフォルトだと「曜日」がありません ここに「曜日」を表示する手順について説明します。 「曜日」が追加された時の表示です 目次1. …

Linux

Ubuntu 16.04 TLS (WSL) に HTTP/2 に対応した curl コマンドをインストールする

WSL で導入している Ubuntu 16.04 TLS ですが、この中に入っている curl コマンドは HTTP/2 に対応していません。 $ curl -I –http2 https://ww …