ハッシュとは、あるデータが別のあるデータと一致しているかどうかを調べる際に使われる短いデータである。
ハッシュとは、データの確認や探索に用いる小さなデータの事である。ハッシュ値は元データを何らかのルールで要約したものと捉えることができる。
ハッシュはある特定のアルゴリズムによって生成され、次のような場合に用いられる。
ハッシュはその利用のされ方から、同じデータに対しては同じハッシュが生成されなければならない。また、その他にも以下の用件を満たすのが望ましい。
圧縮と異なるのは、ハッシュは元となるデータが一致しているかどうかが分かれば良いので、データを復元できなくても良い点である。そのため、通常あるデータのハッシュはそのデータを圧縮したものよりも遥かにデータ量が少ない。また、元データを復元できないことから、暗号化とも異なる。暗号化では暗号化で生成されたデータからパスワードや秘密鍵を用いて復元できなければならない。
世の中には様々なハッシュアルゴリズムが存在するが、大まかに言うとデータ構造を作るためのハッシュと、暗号やセキュリティで用いるハッシュ(暗号的ハッシュという)があり、それぞれ特性が異なっている。
データ構造用のハッシュでは、良いハッシュを生成できるに越したことはないが、そのためにハッシュ自体の生成が遅くては本末転倒なため、性能と速度のバランスを取ったアルゴリズムが使用される。また生成される値の範囲も狭く、大体は4バイト整数にまとめられる。例 Murmur Hash,Fowler-Noll-Vo hash,Jenkins hashなど。
一方暗号的ハッシュでは、簡単にデータの衝突などが発生しては問題があるため、生成が遅くとも天文学的確率でしか同じハッシュ値を生成しないような工夫が重視される。生成される値もデータ構造用に比べると長く、20バイトから64バイト程度のものが使われる。また暗号的ハッシュではハッシュの値から元のデータを予測できてはならないという要件が必要である(例えば似たデータから似たようなハッシュが出ると、近場を総当りで探すことによって元の値を見つけられてしまうため)。例 SHA-256,SHA-512,SHA3-512など。またかつては使われていたが、今は脆弱性が見つかり使用されていないものとしてはMD5,SHA-1などがある。
ハッシュがどういうものか理解するために、ごく簡単なハッシュの例を用いて説明しよう。
例えばハッシュアルゴリズムとして「文字列を一文字おきに取り出す」というものを考えよう。例えば、「ニコニコ動画」が元の文字列として与えられた場合、そのハッシュは「ニニ動」となる。このハッシュアルゴリズムを使って、「ニコニコ動画」という文字列が書かれたファイルが破損していないかどうかを確認できるようにするには、ハッシュである「ニニ動」という文字列が書かれたファイルをハッシュファイルとして提供すればよい。ユーザはダウンロードしたファイルの文字列を一字おきに取り出してハッシュファイルの内容と同じになるかどうかを調べることでダウンロードが成功したことを確認できる。
実際にはこのハッシュアルゴリズムは、「ニニ動」というハッシュが与えられたときに元データを推測しやすい(すぐに「ニコニコ動画」が元データであることが分かる)うえ、ハッシュが「ニニ動」となる他の有効な文字列をすぐに生成できる(例えば「ニフニフ動画」)、ハッシュの長さが元データの長さに対して長すぎる(ハッシュが元データの半分にしかならない)など、ハッシュとしては十分に使い勝手が良いとは言えない。実世界で広く使われているハッシュアルゴリズムは、数学的にこれらの問題を解決している。
英単語として「hash」と言えば、「細切れ」「切り刻む」「小さくちぎる」「焼き直し」などの意味で使われている。これは、上記の「ハッシュ」の語源でもある。
また、「ハッシュドビーフ」と言えば「牛肉の細切れをデミグラスソースで調理した料理」の名前として使われている。
「ハッシュドポテト」と言えば「細かくしたジャガイモを小麦粉を付けて油であげた物」を指す。
掲示板
14 ななしのよっしん
2017/12/22(金) 21:52:38 ID: A03a7i/j/P
ハッシュの衝突が起こりうるってことは要するにハッシュ関数は単射な写像じゃないってことだから
ハッシュ関数が不可逆なのは一方向だからではなく単射じゃないせいで逆関数が存在しないからなのでは
完全ハッシュは定義域をうまく制限することで単射にしているだけでアルゴリズムとしては元の情報を削っているはずだから、完全ハッシュ関数であっても原理的には元の文章を復元できないと思う
15 ななしのよっしん
2018/06/07(木) 08:08:36 ID: F0cZIk1qqf
>>13
ああ、なろう系俺tueee主人公にようやくまともなライバル登場と思ったらあっさり舎弟に成り下がって主人公運搬係やって無駄に死んだ存在意義のなさと声優の無駄使いが酷かった人か
天才クリム演じられてほんと良かったな逢坂さん
16 ななしのよっしん
2021/01/18(月) 10:16:30 ID: 4NRE9SSZ3h
hash は細かく切り刻む
hash out で徹底的に議論する
ならばハッシュはしらみつぶしと似たような意味ではないかと思った
つぶしシラミ値と呼ぼう
急上昇ワード改
最終更新:2025/04/22(火) 19:00
最終更新:2025/04/22(火) 19:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。