انتقل إلى محتوى الدرس

Hashing Passwords with password_hash تجزئة كلمات المرور بدالة password_hash

خزّن كلمات مرور المستخدمين بأمان تام في PHP 8 باستخدام password_hash وخوارزميات Bcrypt وArgon2id ودالة التحقق password_verify.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تُولّد الدالة المدمجة password_hash() نصاً واحداً متكاملاً يضم معرف الخوارزمية، ومعاملات التكلفة، والملح العشوائي الفريد، وخلاصة التجزئة النهائية.

  • استخدم الثابت PASSWORD_DEFAULT ليتبنى تطبيقك تلقائياً الخوارزميات الأقوى المعتمدة في إصدارات PHP المستقبلية.
  • استدعاء password_hash() مرتين لنفس كلمة المرور تماماً يُنتج نصين مختلفين كلياً لأن كل استدعاء يولد ملحاً عشوائياً جديداً.
  • عرّف عمود كلمة المرور في قاعدة البيانات دائماً بنوع VARCHAR(255) لضمان عدم اقتطاع التجزئات الأطول مستقبلاً.

رغم تطابق قيمة $password، فإن مقارنة $hashOne === $hashTwo ترجع No لأن كل استدعاء يدمج ملحاً عشوائياً مختلفاً.

PHP
<?php
$password = "MyVault#9876";

$hashOne = password_hash($password, PASSWORD_DEFAULT);
$hashTwo = password_hash($password, PASSWORD_DEFAULT);

$info = password_get_info($hashOne);
echo "Algo Name  : " . $info['algoName'] . "\n";
echo "Same Hash? : " . ($hashOne === $hashTwo ? "Yes" : "No") . "\n";