Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Kata Laluan Hashed Tidak Padan Menggunakan password_hash() dan password_verify()?

Mengapa Kata Laluan Hashed Tidak Padan Menggunakan password_hash() dan password_verify()?

DDD
DDDasal
2024-10-21 07:07:02634semak imbas

Why Are Hashed Passwords Not Matching Using password_hash() and password_verify()?

PHP password_hash(), password_verify()

Masalah:

Skrip pendaftaran menggunakan password_hash() untuk penyulitan kata laluan dan skrip log masuk menggunakan password_verify() untuk pengesahan kata laluan tidak sepadan dengan kata laluan dengan betul.

Jawapan:

Berikut ialah pecahan isu dan penyelesaian kod:

Inti Utama:

  • password_hash() mencipta perwakilan cincang kata laluan yang disediakan menggunakan algoritma yang ditentukan.
  • password_verify() membandingkan kata laluan yang diberikan kepada kata laluan cincang, kembali benar jika ia sepadan.
  • Fungsi password_verify() memerlukan algoritma pencincangan asal untuk digunakan dalam perbandingan.

Isu dan Penyelesaian:

Masalah timbul apabila menggunakan algoritma berbeza untuk pencincangan dan pengesahan. Ralat yang anda terima ("Tidak. Kata Laluan") menunjukkan bahawa kata laluan yang dicincang yang disimpan dalam pangkalan data tidak sepadan dengan kata laluan yang tidak dicincang yang dimasukkan semasa log masuk.

Kod Disemak:

Pendaftaran (Hashing):

<code class="php">$password = password_hash($password, PASSWORD_DEFAULT); // Using PASSWORD_DEFAULT or specific algorithm</code>

Log Masuk (Pengesahan):

<code class="php">if (password_verify($pwd, $row['password'])) {
    // Password matches...
}</code>

Nota Kaki:

  • Pastikan lajur kata laluan dalam pangkalan data cukup panjang (cth., VARCHAR(255)) untuk menampung kata laluan yang dicincang.
  • Gunakan pernyataan yang disediakan untuk keselamatan dan mengelakkan suntikan SQL.

Atas ialah kandungan terperinci Mengapa Kata Laluan Hashed Tidak Padan Menggunakan password_hash() dan password_verify()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn