कुछ बिंदु हैं जिन्हें सुधारा जा सकता है, लेकिन पहले मैं PHP के नए फ़ंक्शन पासवर्ड_हैश () . यह फ़ंक्शन एक सुरक्षित नमक उत्पन्न करेगा और इसे परिणामी हैश-मान में शामिल करेगा, ताकि आप इसे एकल डेटाबेस फ़ील्ड में संग्रहीत कर सकें। एक संगतता पैक भी मौजूद है। पुराने संस्करणों के लिए।
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
आपके कोड के बारे में कुछ विचार:
- आप क्रिप्ट() के साथ एक BCrypt हैश उत्पन्न करते हैं, इसलिए नमक परिणामी हैश का हिस्सा होगा। इसे अलग से स्टोर करने की कोई आवश्यकता नहीं है।
- नमक के उत्पादन में सुधार किया जा सकता है, ऑपरेटिंग सिस्टम MCRYPT_DEV_URANDOM के यादृच्छिक स्रोत का उपयोग करें।
- यदि आप लागत कारक को 9 में बदलते हैं, तो प्रारूप अमान्य हो जाएगा, क्योंकि क्रिप्ट दो अंकों की अपेक्षा करता है।