السلام عليكم
و أهلا برواد ركن لغات البرمجة
نلتقي اليوم بإذن الله لنشرح كيف نصنع دالة لتشفير الباسووردات لادخالها لقاعدة البيانات و تكون مؤمنة ضد التشفير يعني التشفير بطريق واحد
بطبيعة الحال لن نضيع الوقت في صنع تشفير بأنفسنا من الصفر بل سنعتمد على دوار تشفير موجودة و قوية كال md5 و sha1 و hash و بطبيعة الحال لن نكثر منها حفاظا على سرعة دالتنا في التشفير
المهم نبدأ على بركة الله بانشاء ملف جديد و نعطيه اي اسم ،
نفتح وسوم PHP كما هو معتاد و نضع اسم لدالتنا أي اسم تريد :
بعدها نمر لكتابة الاسطر المهمة و التي ستمكننا من التشفير :
نشرح الان محتوى الدالة :
1/ تقوم الدالة بجلب محتوى الكلمة المراد تشفيرها و يتم تشفيرها بال md5 ثم sha1 و نلصقهما مه بعضها لنحصل على 72 حرف لتشفيرتنا.
2/ بعدها نعيد تشفير ال72 حرف بال md5 لنحصل على 32 حرف .
3/ نقوم ايضا باعدة تشفير ال32 حرف الناتج بال hash whirlpool الذي ينتج لنا تشفير من 128 حرف هذا لزيادة الحماية أكثر و لكي لا نترك المجال للعودة للوراء.
4/ نقوم باختصار ال128 حرف الى 25 حرف على حسب الطول الذي تريده لتشفيرتك الناتجة و نبدأ من الحرف العاشر و نختار من بعد 25 حرف يمكنك اختيار ما تشاء في حدود ال128 حرف السابق.
5/ نقوم بتغيير الارقام و الحروف الناتجة لنحصل على دالة خاصة بنا و تدل علينا ^^.
الان مثلا لو قمنا بعمل
[PHPCODE]echo spinash('Dev-Point');[/PHPCODE]
الناتج يكون كالتالي :
الان تمام حماية الكلمات السرية ممتازة و لا يمكن فكها الا بالتخمين كمثلا نشفر 123456 و نقارن الكود الناتج بالذي امامنا فهذه الطريقة الوحيدة لمعرفة الباس.
لكن نحن لن ترك المجال لذلك و ذلك باستعمال ما يطلق عليه بالsalt و سنبرمج salt خاص بنا
المهم ننشء دالة جديدة نسميها اي اسم انا اخترت spinashs و هذا محتواها :
الان نشرح الاسطر :
1/ أولا نقوم بتشفير الكلمة بدالتنا السابقة.
2/ نقوم باختيار متغيرين يحملان قيم رقم عشوائي من 10 ملايين رقم.
3/ نقوم بتشفير رقمين كل على حذا باستعمال دالتنا السابقة.
4/ نقوم بلصق الslat1 بأول الهاش و الثاني باخره و نقوم باعادة قيمة الهاش الجديد لينتج لنا هاش من 35 حرف.
الان لو طبعنا نفس الكلمة السابقة بالدالة الجديدة :
[PHPCODE]echo spinashs('Dev-Point');[/PHPCODE]
و هذا ناتج الهاش الجديد الذي لا يتطابق و يتغير كل مرة و لا يمكن ان يتطابق ابدا الا 1% طبعا فعالم لا يمكن لا يوجد و الصدف واردت حتى ما أقصى الظروف.
و كما ستلاحظون الهاش الثابت هو الهاش الذي تحته سطر اما على الجوانب فيتغيرون و يظهر ان الكود كله يتغير
نمر الان للمهم ، كيف نتأكد من تطابق الهاش مع الباس المدخل ان كان متغير
لذلك وضعت هذا الشرح الذي يوضح في post test القيمة المدخلة و كيف نتأكد من تطابقها مع الهاش المتغير في قاعدة البيانات.
كما ترون قمنا بتشفير الهاش ب دالتنا الاولى و اختصرنا بل و أزلنا السالت بتحديد القيمة التي نريدها في 25 من القيمة 5 الى 30 و بذلك يتم التطابق و ندخل عادي .
ستقولون ان المخترق يمكن ان يعرف ان السالت موجود بالجوانب و بذلك يستطيع التخمين مرة اخرى.
سنحاول ايضا ان نصعب عليه الامر و ذلك بتشفير ملف login كاملا ب SpinObf و هو ما سأطرحه قريبا ان شاء الله أونلاين لتشفير ملفاتكم كاملة .
هذا كل ما لدي أستودعكم الله و نلتقي في درس اخر ان شاء الله ، و أتمنى ان أرى تفاعلكم مع الموضوع و شكرا.
تحويل كودإخفاء محول الأكواد الإبتساماتإخفاء