سؤال مهم: لو بنيت برنامجاً فيه تسجيل دخول، وين تخزن كلمات مرور المستخدمين؟
أبداً لا تخزنها كنص عادي! تخيل كتبت كل الأسرار بورقة وعلقتها على باب بيتك — أول من يقرأ الملف يشوف كل شي. لو انسرق ملفك (أو حتى قرأه صديقك الفضولي)، انكشفت كل كلمات المرور مرة وحدة.
الحل الذكي اسمه الهاش (Hash). تخيله مثل خلاطة عصير لا يمكن رجوعها للوراء: تحط تفاحة (كلمة المرور)، تطلع عصارة رمز طويل غريب. من العصارة مستحيل ترجع التفاحة. لكن السر الجميل: نفس التفاحة دائماً تعطي نفس العصارة بالضبط.
يعني ما نحتاج نخزن كلمة المرور أصلاً — نخزن العصارة (الهاش)! وعند الدخول، نعصر كلمة اللي كتبها، ونقارن العصارتين. متطابقتين؟ هو هو المستخدم.
بايثون عندنا مكتبة جاهزة اسمها hashlib:
import hashlib pw = "سري-جدا" h = hashlib.sha256(pw.encode()).hexdigest() print(h) # رمز طويل مثل: 8f4b3c...
hex... حرفياً "الرمز بالست عشري". جرب تغير حرف واحد من كلمة المرور — يطلع هاش مختلف كلياً! مرة أخرى: نفس الكلمة = نفس الهاش دائماً، كلمة مختلفة = هاش مختلف تماماً.
مثال تسجيل دخول حقيقي مبسط:
import hashlib
# الهاش المحفوظ من وقت التسجيل
saved = hashlib.sha256("كلمة-سرية".encode()).hexdigest()
guess = input("كلمة المرور: ")
if hashlib.sha256(guess.encode()).hexdigest() == saved:
print("أهلاً بك! الدخول نجح")
else:
print("كلمة المرور غلط")لاحظ: حتى صاحب البرنامج نفسه ما يعرف كلمة المرور الأصلية — يعرف الهاش بس! هذي أمانة حقيقية.
معلومة للأمانة العلمية: المواقع الكبيرة تضيف "ملحاً" (salt) وتكرر الحسابات آلاف المرات، عشان يصير كسر الهاش أصعب وأصعب. المبدأ عندك صحيح، والاحتراف زيادة عليه.