概要

ハッシュ関数とは、任意の長さのデータを入力すると、常に決まった長さ(固定長)の値「ハッシュ値(メッセージダイジェスト)」を出力する関数です。同じ入力からは必ず同じハッシュ値が得られますが、出力から元のデータを復元することはできません。

この性質を使って、データの改ざん検知やパスワードの安全な保存に広く使われます。代表的なアルゴリズムにSHA-256などがあります(古いMD5やSHA-1は安全性が低下し非推奨)。

詳細(特徴・性質)

性質内容
固定長出力入力の長さに関係なく、ハッシュ値は常に同じ長さ。
一方向性ハッシュ値から元のデータを求めることはできない(不可逆)。
衝突困難性異なるデータから同じハッシュ値が得られにくい。
敏感性入力が1文字でも変わると、ハッシュ値は大きく変化する。

「一方向性」があるため暗号化とは異なり復号できない点が重要です。暗号化(戻せる)とハッシュ化(戻せない)を混同しないようにしましょう。

ハッシュ関数のキーワードは「固定長・一方向(復号できない)・衝突困難・改ざん検知」。暗号化と違い元に戻せない点が頻出。ディジタル署名でも内部的に使われます。

用途と注意点

主な用途

注意点

ハッシュ値が同じなら「データは改ざんされていない」と判断できます。これが完全性(Integrity)を守る基本技術です。パスワードはハッシュ+ソルトで保存するのが定石です。

関連・活用例

ソフトウェアの配布では、正しくダウンロードできたか・改ざんされていないかを確認するため、配布元がハッシュ値を公開しています。利用者は手元のファイルのハッシュ値と照合することで真正性を確認できます。ディジタル署名やブロックチェーンの基盤技術でもあります。

試験での問われ方