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 のスタートメニューには、テキストファイルをピン留めすることができません。 「Windowsキーだけでアクセスできる」というかなり優遇されたエリア(しかも結構広い!)ですが、ここに …

Windows 10 で「ネットワークの場所(プロファイル)」を「パブリック」から「プライベート」に変更する方法

Windows 10 で「ネットワークの場所」を「パブリック」から「プライベート」に変更する方法について説明します。

Windows

【Windows】廃棄するストレージのデータを SDelete コマンドで完全に消去する

目次1. SDelete とは?2. SDelete の導入3. SDelete で USBメモリを完全に消去する手順1. USBメモリを Windows パソコンに接続する2. USBメモリの「ディ …

Windows

Windows Terminal についての情報

Windows Terminal アプリケーションについての情報を記載しています。

タスクバー上のアプリケーションアイコンに数字を表示してくれる

7+ Taskbar Numberer を使って、タスクバーからのアプリ起動をラクにする

目次1. はじめに2. 7+ Taskbar Numberer の 使い方3. 7+ Taskbar Numberer の更新について(おまけ)2017年4月時点で公開していた導入手順説明動画 1. …