PHP自主練 / 1hour
WEBサービス部 Lesson9~11 / 1hour
Sep / 29.5hour
Total / 131hour
WEBサービス部の自主練用教材
ハッシュ化と暗号化って何が違うの?
ログイン機能などを実装する際に必要となる「パスワード」。
ユーザーに入力してもらったパスワードを、加工せず生のまま$_POSTでやり取りすると大問題。
そこでパスワードを「ハッシュ化」することで、解読できないようにする、という流れが一般的になってるようです。
・・・が、「暗号化」というのもありますね。何が違うのでしょうか?
暗号化
それに対し、暗号化されたデータを元のデータに戻す処理のことを「復号化」と言います。
また、暗号化や復号化の処理には暗号アルゴリズムに応じた「鍵」が必要になります。
ハッシュ化
”ハッシュ”という英語の意味通り、情報を細切れ・ぐちゃぐちゃにすることで元に戻すことができないようにしている。
というように、暗号化は復元可能でハッシュ化は復元不可能な加工を、情報に施す、という感じです。
PHPでハッシュ化をするにはどうするの?
今までのことを見ると、「アルゴリズム?不可逆変換?」という感じでとてつもなく難しいプログラミングを組む必要がありそうですが、次のコードを記述するだけでじつはハッシュ化は実装できます。
password_hash(第一引数, 第二引数)
第一引数=暗号化したい文字列を指定。多くはユーザーが入力したパスワードが入るので$_POST[‘pass’]みたいな形が多い。
第二引数=ハッシュするためのアルゴリズムを指定。基本的にPASSWORD_DEFAULTを指定しておけばOK。
ハッシュ化したものがパスワードとマッチするかどうかを確かめるには
password_verify(第一引数(=ユーザーが入力したパスワード), 第二引数(=ハッシュ化したパスワードの値))
とすることで確認することができます。
参考
https://www.php.net/manual/ja/function.password-hash.php
https://qiita.com/bayasist/items/da4be3a90a97b8cf38fe
https://qiita.com/rana_kualu/items/3ef57485be1103362f56
https://qiita.com/MasaKuuuu/items/51552aa0331f3ae90dae
学習は全てウェブカツ!!というプログラミングスクールで学んでいます。
大手スクール生徒や現役エンジニアが多数学び直している「実務レベル」に特化した「稼ぐ」ためのプログラミングスクール[…]