ハッシュとは、あるデータが別のあるデータと一致しているかどうかを調べる際に使われる短いデータである。
曖昧さ回避
概要
ハッシュとは、データの確認や探索に用いる小さなデータの事である。
ハッシュはある特定のアルゴリズムによって生成され、次のような場合に用いられる。
- ダウンロードしたファイルが改竄されたり破損したりしていないかを確認する。
- 大量のデータから特定のデータを探す際の目印にする。(ハッシュテーブル)
- パスワード自体を保存することなくパスワードの照合を行う。
ハッシュはその利用のされ方から、同じデータに対しては同じハッシュが生成されなければならない。また、その他にも以下の用件を満たすのが望ましい。
圧縮と異なるのは、ハッシュは元となるデータが一致しているかどうかが分かれば良いので、データを復元できなくても良い点である。そのため、通常あるデータのハッシュはそのデータを圧縮したものよりも遥かにデータ量が少ない。また、元データを復元できないことから、暗号化とも異なる。暗号化では暗号化で生成されたデータからパスワードを用いて復元できなければならない。
ハッシュアルゴリズムの具体例としてはCRC、MD5、SHA1、SHA256などがある。
簡単なハッシュの例
ハッシュがどういうものか理解するために、ごく簡単なハッシュの例を用いて説明しよう。
例えばハッシュアルゴリズムとして「文字列を一文字おきに取り出す」というものを考えよう。例えば、「ニコニコ動画」が元の文字列として与えられた場合、そのハッシュは「ニニ動」となる。このハッシュアルゴリズムを使って、「ニコニコ動画」という文字列が書かれたファイルが破損していないかどうかを確認できるようにするには、ハッシュである「ニニ動」という文字列が書かれたファイルをハッシュファイルとして提供すればよい。ユーザはダウンロードしたファイルの文字列を一字おきに取り出してハッシュファイルの内容と同じになるかどうかを調べることでダウンロードが成功したことを確認できる。
実際にはこのハッシュアルゴリズムは、「ニニ動」というハッシュが与えられたときに元データを推測しやすい(すぐに「ニコニコ動画」が元データであることが分かる)うえ、ハッシュが「ニニ動」となる他の有効な文字列をすぐに生成できる(例えば「ニフニフ動画」)、ハッシュの長さが元データの長さに対して長すぎる(ハッシュが元データの半分にしかならない)など、ハッシュとしては十分に使い勝手が良いとは言えない。実世界で広く使われているハッシュアルゴリズムは、数学的にこれらの問題を解決している。
英単語「Hash」
英単語として「hash」と言えば、「細切れ」「切り刻む」「小さくちぎる」「焼き直し」などの意味で使われている。これは、上記の「ハッシュ」の語源でもある。
また、「ハッシュドビーフ」と言えば「牛肉の細切れをデミグラスソースで調理した料理」の名前として使われている。
「ハッシュドポテト」と言えば「細かくしたジャガイモを小麦粉を付けて油であげた物」を指す。
関連項目
http://dic.nicomoba.jp/k/a/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5


ページ番号: 4091958
リビジョン番号: 1429570
読み:ハッシュ
初版作成日: 09/07/19 23:35 ◆ 最終更新日: 12/02/04 02:54
編集内容についての説明/コメント: 勇者ハッシュにリンクを設定
記事編集 / 編集履歴を閲覧 / Twitterで紹介





JASRAC許諾番号: 9011622001Y31015
ヘッダー:固定
ヘッダー:追従