つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

Hash関数の速度はハッシュ化対象のオブジェクトの長さによる

   

みんな大好きハッシュ関数についてです。

知っている人は知っているし、当然と言えば当然な話ですが・・・

ハッシュ関数は引数に与えるオブジェクトの長さ、大きさによって処理時間が変わります。

コード

単純にSHA-512のハッシュ関数オブジェクトを用意してハッシュ化を行っています。

それぞれ10バイト、10Kバイト、10Mバイトの値をハッシュ化していますが、結果は

言いたいこと

10Mバイトのオブジェクトなんてハッシュ化するユースケースないよ!と思うかもしれませんが・・・

例えば画像ファイルや動画ファイルのハッシュ値を計算しておいて、何らかのlookupを高速にしたり。Webアプリケーションに脆弱性があって、10MBのテキストを受け付けられる状態になっていているとか。

ちゃんとハッシュ化のコストやリスクを押さえていないと、DOSでアプリが落ちたり、アプリの性能が思ったよりもでなかったりする、ということは割とありそうですね。

という訳で、ハッシュにはコストがかかるので覚えておきましょう。

 - Java