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

DDD
Lepaskan: 2024-10-21 07:07:02
asal
633 orang telah melayarinya

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>
Salin selepas log masuk

Log Masuk (Pengesahan):

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

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!

sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!