-3

私はコードを持っています

 echo password_hash( 'i=badatphp', PASSWORD_BCRYPT, [ 'cost' => 10 ] );

スクリプトを実行するたびにパスワードが変更されます

PHP 7 を使用しています。PHP 5 では以前はソルトを設定できましたが、現在はできません。

塩が何であるかを知らない私はどうすれば乗り越えられるのでしょうか?

4

2 に答える 2

4

この方法で実行するたびに新しいハッシュが表示される理由はpassword_hash、新しいランダム ソルトが自動的に生成され、入力パスワードが同じであっても異なるハッシュになるためです。

PHP 7 の時点で、salt オプションは非推奨ですが、から削除されたわけではありませんpassword_hashただし、非推奨の理由は、削除が計画されているためであることに注意してください(おそらく、PHP の次のマイナー リリースで)。撤去が計画されている理由は、人々が塩を生成する劣悪な手段を使用することを思いとどまらせるためです. この関数は適切なランダム ソルトを自動的に生成できるため、独自のソルトを提供する理由はほとんどありません。

いずれにせよ、password_hashは単なる薄いラッパーcryptであり、基礎となる API のプリミティブをより多く公開します。したがって、独自の塩を提供したいcrypt場合でも可能です。password_hashただし、エラーが発生する可能性が低い方法でPHP がそれを行うことができる場合は、それを強くお勧めしません。

于 2016-06-11T15:44:25.280 に答える
2

使用されたアルゴリズム、コスト、ソルトがハッシュの一部として返されます。したがって、ハッシュを検証するために必要なすべての情報が含まれています。これにより、password_verify() 関数は、ソルトまたはアルゴリズム情報用に別のストレージを必要とせずにハッシュを検証できます。 http://php.net/manual/en/function.password-hash.php

ドキュメントの状態として、ソルトが生成され、返されたハッシュに格納されるため、ソルトを関数に渡したり、個別に格納したりする必要はありません。

の使用方法の簡単な例については、この回答を参照してくださいpassword_hash

于 2016-06-11T15:45:11.883 に答える