「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

メッセージダイジェスト関数

pointこの用語のポイント

pointハッシュ関数のことだよ

point関数だよ

point入力に対して適当な値(ハッシュ値)が返ってくるよ

point入力する内容が同じであれば、同じ値が返ってくるよ

スポンサーリンク

簡単に書くよ

メッセージダイジェスト関数(読:メッセージダイジェストカンスウ 英:message digest function)とは

「ハッシュ関数」のこと。
用語の中身としては

入力されたデータをもとにして、適当に見える値(特定のルールに沿って、ぐちゃぐちゃにした値)を返してくれる関数(処理のまとまり)
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「関数」と「ハッシュ関数」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

関数は「何かを入れると何かをやって何かを返してくれる、処理のまとまり」です。
一般的には、入力を受けて処理をやり、その結果として出力があります。

メッセージダイジェスト関数

ついでなので書いておくと、関数に入れる値は「引数(ヒキスウ)」と言います。

メッセージダイジェスト関数2

関数から出てくる値は「戻り値」です。

メッセージダイジェスト関数3

ちょっと汚い話で恐縮ですが、人間は、ご飯を食べて、ウンチを出します。

メッセージダイジェスト関数4

人間が関数だと考えてください。
ご飯に相当するものが引数です。
ウンチに相当するものが戻り値になります。

メッセージダイジェスト関数5

ハッシュ関数は「入力に対応する適当な値(適当に見える値)を返してくれる関数」です。
例えば「愛媛みかん」を入れると「3」が返ってきます。
「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れると「とちおとめ」が返ってきたりします。

メッセージダイジェスト関数6

何を入れると何が返ってくるか、入れたものからは分かりません。
返ってくるのは適当な値です。

ただし、同じものを入れれば、必ず同じ値が返ってきます。
「愛媛みかん」を入れると、必ず「3」が返ってきます。
何回入れても「3」が返ってきます。

1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる


というのがハッシュ関数の特徴です。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当では ありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。

以上を踏まえて

ハッシュ関数の別の呼び名

が「メッセージダイジェスト関数」です。
「ハッシュ関数」と「メッセージダイジェスト関数」は同じものだと思ってください。

メッセージダイジェスト関数7

ハッシュ関数の戻り値は「ハッシュ値」と言います。

メッセージダイジェスト関数8

ハッシュ値を指して「メッセージダイジェスト」と呼んだりもします。
「ハッシュ値」と「メッセージダイジェスト」は同じもの(ハッシュ関数の戻り値)を指す用語です。

メッセージダイジェスト関数9

「ハッシュ値」を返す関数だから「ハッシュ関数」なのでしょう。
「メッセージダイジェスト」を返す関数と解釈すれば「メッセージダイジェスト関数」になります。

よって「ハッシュ関数」と「メッセージダイジェスト関数」は同じものを指す用語です。

メッセージダイジェスト関数10

ちなみに、今回調べていたら、ハッシュ関数そのものを指して「メッセージダイジェスト」と表現している人がいました。
「メッセージダイジェスト関数」の省略表現なのかもしれませんが、個人的には少しだけ違和感があります。

私の理解では

メッセージダイジェスト関数:関数
メッセージダイジェスト:(メッセージダイジェスト関数からの)戻り値


です。
「メッセージダイジェスト」と言われると、メッセージダイジェスト関数から返ってくる値(=ハッシュ値)を想像します。

……とかいいつつ、私は「メッセージダイジェスト(関数)」という表現を、ほとんど使いませんけどね。
「ハッシュ関数」&「ハッシュ値」派です。


image piyo2

一言でまとめるよ

まぁ「メッセージダイジェスト関数」って単語が出てきたら「ハッシュ関数(入力されたデータをもとにして作った適当な値を返してくれる関数)のことなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像073
書籍画像042

おまけ

■訳してみるよ

「message(メッセージ)」の意味は「伝言」とか「伝達」とか「連絡」とかです。
「digest(ダイジェスト)」の意味は「要約」とか「要約する」とかです。
「関数」は日本語ですね。
何となく くっつけると

伝言を要約する関数

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本
ソフトウェア開発現場の「失敗」集めてみた。 42の失敗事例で学ぶチーム開発のうまい進めかた