Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

php パスワード まとめ

phpでパスワードを暗号化する場合使用すべきなのは、password_hash()
- password_hash()
強固な一方通行ハッシュアルゴリズムを用いて、新しいhashを生成する。
crypt()と互換性があってcrypt()が作ったhashはpassword_hash()でも使用可能らしい。
password_hash()はcrypt()のシンプルなラッパーであり、既存のパスワードハッシュと互換性があります。
password_hash() は、ソルトを指定しなかった場合にはランダムなソルトを作りますので
一般に、これがいちばんお手軽で安全なアプローチです。
および PHP 7.0.0 以降でソルト・オプションは非推奨になりました。らしい。

ここでは、password_hash()を使用することを推奨する。

  • crypt() 文字列のhashを作成 salt(ソルト)オプションを使用しないと安全ではない。結果として、暗号化する際にはpassword_hash()を推奨。

ソルトとは?
暗号理論におけるソルトとは、ハッシュ処理の際に追加するデータのこと。
事前に計算済みのハッシュとそのもと入力の対応表(レインボーテーブル)で出力を解析される可能性を減らすために利用します。

端的にいうと、ちょっとした追加データのことで、追加することによりハッシュをクラックすることが劇的に難しくなると言われています。
なので、crypt()はソルトを使用しないのであれば使用しない!

  • sha1

文字列のsha1hashを返す
多分、sha1型みたいなもん

  • md5 文字列のmd5hashを返す 多分sha5型みたいなもん

password合致確認

暗号化したら、あっているか確認しなくてはならないので、
password_verify()を使用して確認します。
これはパスワードとhashがマッチする場合に、true それ以外にはfalseを返すものです。
つまり、元のpasswordの平文を見せるようにするのではなく、あくまで
正解、不正解を返すものとなっているようです。
https://www.php.net/manual/ja/function.password-verify.php

平文<- 暗号化される前、暗号化されていない状態のデータのこと

まとめ

まぁ、大人しくpassword_hash()を使って、password_verify()を使って、合致確認をしましょうね。

参考:https://www.php.net/manual/ja/faq.passwords.php

dossy
関西人 ruby/javascript少々/Golang少々/PHP少々/Vue.js少々/Python少々 頭を賢くする方法を日々模索中 記事を読むには英語が大事だと思う
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away