問題タブ [php-password-hash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - password_hash は実際にどのように機能しますか?
監査人に説明できるように、password_hash を完全に理解しようとしています。
私の答えの検索に基づいて、password_hash()
関数が のラッパーであることを理解していますcrypt()
。事前定義された定数の PHP マニュアルを読んでいると、デフォルトの整数値として使用されていることがわかりPASSWORD_BCRYPT
ます (基本的には、CRYPT_BLOWFISH
アルゴリズムを使用してパスワードをハッシュします)。
私を混乱させているのは、$options
省略した場合、変数がランダムなソルトを生成し、コストが に設定されること10
です。より高いコストを指定した場合 (例: 12
)、ソルト値を指定していないため、ランダムなソルトが生成されますか? ここで混乱しているのは、 を省略しているのでは$options
なく、別のコストを提供しているためです。
私の他の質問:
- コスト値を上げるとセキュリティが向上するのはなぜですか?
password_hash()
一方向のハッシュ関数でpassword_verify()
あるため、ソルトがランダムであるため、パスワードを検証するにはどうすればよいですか?- ハッシュ
CRYPT_SHA512
よりも強いですか?CRYPT_BLOWFISH
php - CRYPT_BLOWFISH は何ビットを使用しますか?
PHP でpassword_hash関数を使用して、データベースに保存する前にユーザー パスワードをハッシュします。
デフォルトのアルゴリズム (CRYPT_BLOWFISH) を使用してパスワードをハッシュします。コスト値には、10 ではなく 12 を使用します。ただし、暗号化されたパスワードのビット長は不明です。それは64、128、256ビットですか?
また、コスト値を大きくするとビット長が長くなりますか?
ありがとう
php - 既存のユーザーの password_hash
PHP エラーが発生し、hurl.it で空の本文が返されます。DB 内の既存のユーザーのパスワードをハッシュしようとしています。
user_id を POST として使用し、新しく作成された列の DB に更新します
php - PHP password_hash 関数のソルトの長さは 21 または 22?
コード:
結果:
コード:
結果:
コード:
質問:
ご覧のとおり、A と B を 21 文字の文字列に追加することで、22 文字の 2 つの異なるソルトを作成しましたが、HASHES は同じです! 22文字目無視ですか?無視された場合、なぜ 22 文字のソルトを要求するのでしょうか?
php - PHP password_hash()、password_verify()
私の登録スクリプトは、ユーザーのパスワードを受け取り、PHP の password_hash 関数を使用してパスワードを暗号化し、それをデータベースに配置します。作成したばかりのユーザーを使用してログインしようとすると、パスワードが同じかどうかを確認するエラーが表示されます。私の場合、そうではありません。ログイン スクリプトで password_verify 関数を呼び出すと、何が間違っていますか?
登録
ログインする
var_dump を実行すると、次のようになります。
明らかに、パスワードは一緒に照合されていません。そのため、登録スクリプトでは、パスワードがハッシュされてデータベースに送信されます。次に、ユーザーがログインすると、ログイン スクリプトは、ユーザーがログインするために入力したパスワードを確認し、password_verify を使用して、データベース内のハッシュ化されたパスワードと照合します。しかし、ハッシュ化されたパスワードは、ハッシュ化されていないパスワードを一致として受け入れません。私が理解していないのは、なぜですか?
php - password_verify ハッシュがパスワードと一致しない
以下のコードを使用してパスワード ハッシュを生成しました。
次に、255 文字を使用してデータベースに保存します。
次に、コンパレータを実行してログインをテストしようとしましたが、失敗しました。データベースに保存されているハッシュではなく、数行前に生成したハッシュを使用してログインすることしかできません。
データベースのパスワード ハッシュ: $2y$10$xDnZIjzw8h.9utp3qyRlxezPd8jmK9k6Z5JuoVtooOpkPCBd.n6W6 生成されたばかりのパスワード ハッシュ (動作): $2y$10$tolDQdeTQrTio8IJ0Wi9AuHN5Km28pSB5kUh5qfkdkOsDXP295H1K
私はハッシュの専門家ではありません。最新の推奨事項に従おうとしているだけです。ハッシュがデータベース内のハッシュと異なる理由を誰か教えてもらえますか?
php - PHPのpassword_hashとpassword_verifyが全体的に見えてもまだ機能しません
更新 したがって、これは恥ずかしいほど愚かな承認ですが、問題は、データベースに保存したハッシュが引用符を含む「パスワード」のハッシュであったことでした。私が書いたクエリには問題はありませんでした。問題は議長とキーボード。
これはよくある質問です。私はスタックオーバーフローとグーグルを調べて答えを見つけようとしましたが、うまくいきませんでした。
各エージェントに割り当てられたログインとパスワードを含む「エージェント」のテーブルがあります。パスワード フィールドは、長さが 255 の varchar です。
これが私のphpコードです:
私は途方に暮れています。ローカルに作成された password_hash のコピーを提供した場合にのみ機能するように見えますが、そのローカルに作成されたコピーを MySQL データベースで使用すると失敗します。
何か案は?