0
1

More than 3 years have passed since last update.

php パスワード まとめ

Posted at

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1