ハッシュ化、暗号化

ハッシュ化とは?

ハッシュ化は指定のアルゴリズムに基づき、元の文字列を不規則な値に変換する処理を指す。

不可逆であり、ハッシュ化された値から元の値を求めることはできない。

同じ文字列を同じアルゴリズムでハッシュ化した場合、 同じ処理結果となる。

一般的な用途として、 Basic認証に使用するパスワードをDBに保存する場合は、ハッシ
ユ化が用いられる。

画面からパスワードが入力されてきた場合の検証は、ハッシュ化した値同士で突合することで事足りるため、DBから元のパスワードを取得する必要は無い。

これにより、元のパスワードが漏洩するリスクを抑えることができる。

暗号化との違い

一方、暗号化は可逆的であり、複合できる。 SSL通信は、鍵認証とハッシュ化を用いた暗号化の仕組みである。

参考:ハッシュ化と暗号化の違いとは?

実装

javascriptでハッシュ化を行いたい場合にはcryptoAPIを用いる。

window.crypto.subtle.digest('SHA-256', uint8Array)

ただし、暗号化ツールとしては弱く非推奨。暗号化を実施するためには、もっと複雑なフレームワーク等を必要とする。

参考:MDN_SubtleCrypto の暗号以外の使用法

uint8Arrayは、バッファーを扱うときに使用される配列。

 

コメント

タイトルとURLをコピーしました