SHA-2
ハッシュ関数だよ
SHA-1の後継者だよ
SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256の総称だよ
「SHA」の部分は「Secure Hash Algorithm」の略だよ
簡単に書くよ
SHA-2(読:エスエィチエー2)とは
入力されたデータをもとにして作った適当な値を返してくれる関数
(処理のまとまり)(ハッシュ関数)のひとつ
です。
もう少し具体的に書くと
「SHA-224」「SHA-256」「SHA-384」「SHA-512」「SHA-512/224」「SHA-512/256」の総称
であり
SHA-1がパワーアップしたやつ
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・関数
・ハッシュ関数
・SHA-1
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
関数は「何かを入れると何かをやって何かを返してくれる、処理のまとまり」です。
一般的には、入力を受けて処理をやり、その結果として出力があります。
ついでなので書いておくと、関数に入れる値は「引数(ヒキスウ)」と言います。
関数から出てくる値は「戻り値」です。
ちょっと汚い話で恐縮ですが、人間は、ご飯を食べて、ウンチを出します。
人間が関数だと考えてください。
ご飯に相当するものが引数です。
ウンチに相当するものが戻り値になります。
ハッシュ関数は「入力に対応する適当な値(適当に見える値)を返してくれる関数」です。
例えば、ハッシュ関数に「愛媛みかん」を入れると「3」が返ってくるとしましょう。
同じように「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れた場合は「5」が返ってきます。
ハッシュ関数は同じ物を入れれば必ず同じ値が返ってきます。
「愛媛みかん」を入れた場合に返ってくるのは、必ず「3」です。
何回入れても「3」が返ってきます。
「4」が返ってくることは ありません。
ハッシュ関数には
1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる
という特徴があります。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当では ありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。
さて、このハッシュ関数ですが、世の中に1つしかないわけでは ありません。
いろいろな種類のハッシュ関数があります。
例えば、返してくれる値(適当な値)の作り方が違ったりですね。
あるいは、返してくれる値の桁数が違ったりですね。
一口に「ハッシュ関数」と言っても、いくつかの種類があるのです。
そんな、いろいろあるハッシュ関数のひとつが「SHA-1」です。
SHA-1は
何か入れると長さが160ビットの適当な値を返してくれるハッシュ関数
です。
ちなみに「SHA」の部分は「Secure Hash Algorithm(セキュア・ハッシュ・アルゴリズム)」の省略ね。
secure(セキュア)の意味は「安全な」です。
hash(ハッシュ)はハッシュ関数の「ハッシュ」です。
algorithm(アルゴリズム)はカタカナで「アルゴリズム」で伝わりますかね。
単純にくっつけると
安全なハッシュアルゴリズム
となります。
以上を踏まえて
SHA-1がパワーアップしたやつ
が「SHA-2」です。
つまり、SHA-2もハッシュ関数のひとつです。
一口に「SHA-2」と言っても、実は、いくつかの種類があります。
・SHA-224
・SHA-256
・SHA-384
・SHA-512
・SHA-512/224
・SHA-512/256
の6種類です。
この6つのハッシュ関数の総称が「SHA-2」です。
少し、ややこしいですけどね。
頑張って、ついてきてください。
まずは
・SHA-256
・SHA-512
の2つを覚えましょう。
どちらもSHA-2なハッシュ関数です。
ただし、返ってくる値の長さが違います。
それぞれ
・SHA-256:256ビット
・SHA-512:512ビット
の長さの値が返ってきます。
「256」とか「512」の数字が返ってくる値の長さを表しています。
次に
・SHA-224
を覚えましょう。
「224」と書いてありますね。
そうです。
SHA-224は224ビットの長さの値が返ってきます。
ただし、ここでSHA-256が登場します。
SHA-224はSHA-256の仲間です。
SHA-224の中ではSHA-256と同じようなことをやっています。
SHA-256から返ってくる値の長さは256ビットでした。
SHA-224では、SHA-256から返ってきた256ビットをぶった切って224ビットに切り詰めているイメージです。
最後に
・SHA-384
・SHA-512/224
・SHA-512/256
をまとめて覚えましょう。
この3つはSHA-512の仲間です。
関係性は、SHA-256とSHA-224の関係性と同じです。
SHA-512から返ってきた512ビットの値をぶった切って
・SHA-384:384ビット
・SHA-512/224:224ビット
・SHA-512/256:256ビット
の長さに切り詰めているイメージです。
ここまでをまとめると以下のようになります。
それぞれのハッシュ関数から返ってくる値の長さは
・SHA-224:224ビット(SHA-256から返ってくる値をぶった切る)
・SHA-256:256ビット
・SHA-384:384ビット(SHA-512から返ってくる値をぶった切る)
・SHA-512:512ビット
・SHA-512/224:224ビット(SHA-512から返ってくる値をぶった切る)
・SHA-512/256:256ビット(SHA-512から返ってくる値をぶった切る)
です。
系統としてはSHA-256とSHA-512の2種類です。
この2種類のハッシュ関数から返ってくる値をぶった切ることによって6種類に枝分かれしています。
ここまでの説明が、よく分からない人は
1.「SHA-○○」の「○○」が返ってくる値の長さを示している
2.256と512以外は、256か512をぶった切って作る
3.「SHA-512/○○」は「512をぶった切って○○にしているよ!」の意味
の3つを押さえてください。
それだけ覚えておけば何とかなると思います。
一言でまとめるよ
まぁ「SHA-2」って単語が出てきたら「ハッシュ関数
(入力されたデータをもとにして作った適当な値を返してくれる関数)(のひとつ)なんだな~」と お考えください。






