■ はじめに
ハッシュについてまとめる。
目次
【1】ハッシュ 【2】特徴 【3】用途 【4】使用上の注意 【5】主なハッシュアルゴリズム
【1】ハッシュ
* あるデータをハッシュ関数という特別な関数を使うと、 決まった長さのビット列になる、この値を「ハッシュ値」という * ハッシュ値の別名として、 「メッセージ・ダイジェスト (message digest) 」 「フィンガープリント(指紋)」と呼ぶ場合もある
http://itpro.nikkeibp.co.jp/article/COLUMN/20060628/241960/
【2】特徴
* 異なるデータから同じハッシュ値が得られることはほとんどない * ハッシュ値とハッシュ関数が分かっていても 元データを算出できない => 改ざんされる恐れが減る
【3】用途
* ユーザー認証 * デジタル署名(または電子署名) * ファイルの整合性 etc...
【4】使用上の注意
* 以下のURLで言われているが、
http://www.javaroad.jp/bbs/answer.jsp?q_id=20060203152045485
「暗号化」と聞くと元に戻せる、 つまり「複合化」できるイメージを抱いてしまうが、 ハッシュで暗号化すると、基本、元に戻せない => ハッシュ関数は、「不可逆的な一方向の関数」とも呼ばれる。 「一方向」ってことは、元に戻せないってこと。 以下のサイトでは「ハッシュ」と「暗号化」の違いについて書いている。
http://blog.goo.ne.jp/xmldtp/e/b6a697735a597e8e41af460ae2f2875a
http://d.hatena.ne.jp/digisecdog/20101119/1290147066
このブログでは、以下のサイトであるとおり、 「暗号化」を「改ざんされたりされないよう、 決まった規則に従ってデータを変換すること。」と定義し タイトルを「ハッシュで暗号化」っとしている (ただ、混同しやすいので意識したほうがいい)
http://e-words.jp/w/E69A97E58FB7E58C96.html
【5】主なハッシュアルゴリズム
# | アルゴリズム | ビット長 | 備考 |
---|---|---|---|
1 | MD5 | 128 | 脆弱性が判明しているため、非推奨 |
2 | RIPEMD | 128, 160, 256, 320 | 160bit版がビットコインに使われている |
3 | SHA-1 | 160 | 脆弱性が判明しているため、非推奨 |
4 | SHA-2 | 224, 256, 384, 512 | SHA-1の改良版。256bit版がビットコインに使われている |
5 | SHA-3 (Keccak) | 224, 256, 384, 512 | SHA-2に代わる新しいアルゴリズム |
関連記事
メッセージ認証コード ~ MAC / HMAC ~
https://dk521123.hatenablog.com/entry/2022/10/05/095506
ブロックチェーン ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/01/000000
【Python】ハッシュ
https://dk521123.hatenablog.com/entry/2020/05/03/010502
【Java】ハッシュで暗号化する
https://dk521123.hatenablog.com/entry/2014/08/02/234119
Java でEmail を送るには ~ SMTP認証 / DIGEST-MD5 編 ~
https://dk521123.hatenablog.com/entry/2016/12/07/222229
【Linux】md5sum ~ MD5ハッシュ値を返す ~
https://dk521123.hatenablog.com/entry/2017/01/30/220600