bcrypt
password_hash / password_verify
bcrypt password hashing and verification.
كيفية الاستخدام
نظرة عامة
أداة لتجزئة السلاسل النصية باستخدام bcrypt أو للتحقق من سلاسل التجزئة.
من أبرز استخدامات التجزئة "تخزين كلمات المرور".
كمبدأ أساسي، لا يمكن عكس سلسلة التجزئة للحصول على البيانات الأصلية (أحادية الاتجاه).
لا يمكن استخلاص كلمة المرور الأصلية من سلسلة تجزئة bcrypt الخاصة بها.
لذلك لا يتم تخزين كلمات المرور مباشرةً — بل يتم تخزين سلسلة التجزئة عادةً.
كلمة المرور ذاتها ستولّد دائمًا سلسلة التجزئة نفسها.
وهذا يعني إمكانية التحقق من سلسلة نصية بمقارنتها بتجزئة معروفة.
(مثلًا، للتحقق مما إذا كانت التجزئة قد ولّدت من كلمة مرور معينة)
إنشاء التجزئة (password_hash)
تتم تجزئة bcrypt باستخدام كود مثل التالي.$hash = password_hash('string_to_hash', PASSWORD_BCRYPT, [
'cost' => 'cost',
]);
تتضمن سلاسل التجزئة التي ينشئها bcrypt salt (سلسلة عشوائية)، لذا يتم إنشاء سلسلة مختلفة في كل مرة.
$2y$10$Z0kGQ04hCto9dnMu.GyzWOWNQmoKyeF5PXH.zsrf/I.yNJRcbdN86
القيمة الافتراضية لـcost في دالة password_hash هي 10.
رغم أن password_hash تقبل نطاقًا من 4 إلى 31، تقتصر هذه الأداة على 4–15 لتجنب الإجهاد الزائد على الخادم.
(القيم الأعلى قد تستغرق وقتًا طويلًا جدًا في المعالجة.)
التحقق من التجزئة (password_verify)
تتبع سلاسل تجزئة bcrypt تنسيقًا محددًا يتضمن salt وعدد التكرارات، مما يتيح التحقق مما إذا كانت التجزئة قد ولّدت من سلسلة نصية معينة.
يتم التحقق من تجزئة bcrypt باستخدام كود مثل التالي.$result = password_verify('original_string', 'hash_string_to_verify');