شرح صفوف ومحتوى الفقرة
صُممت دوال التجزئة العامة مثل md5() وsha1() وhash("sha256", ...) لتكون فائقة السرعة، مما يجعلها كارثية وغير صالحة إطلاقاً لتخزين كلمات مرور المستخدمين.
- تستطيع البطاقات الرسومية الحديثة حساب مليارات التجزئات من نوع MD5 أو SHA-256 في الثانية الواحدة، مما يكسر كلمات المرور خلال ثوانٍ.
- تُنتج كلمات المرور المتطابقة نفس بصمة MD5 أو SHA-256 عند غياب الملح الفريد، مما يجعلها عرضة لجداول القيم المحسوبة مسبقاً (Rainbow Tables).
- يتطلب تخزين كلمات المرور خوارزميات بطيئة عمداً وقابلة لزيادة عامل التكلفة مع توليد ملح تشفيري عشوائي فريد لكل كلمة مرور.
بينما تنتهي دالة hash("sha256", ...) في أجزاء من النانو ثانية بدون ملح، تطبق دالة password_hash() عامل تكلفة متكيفاً وتدمج ملحاً عشوائياً فريداً داخل النص الناتج.
PHP
<?php
$plain = "Summer2026!";
// INSECURE: Fast deterministic digest (same input = same output)
$fastSha = hash('sha256', $plain);
// SECURE: Slow adaptive hash with unique random salt
$secureHash = password_hash($plain, PASSWORD_DEFAULT);
echo "SHA-256 len : " . strlen($fastSha) . "\n";
echo "Prefix : " . substr($secureHash, 0, 7) . "\n";