الثلاثاء، 24 ديسمبر 2019

شرح الـ encoding والـ Hash وكيفية انشاء سكربت لتشفير

هذه المقال وغيرها تحت وسم "افضل مقال تقني" تعبر عن اراء أصحابها


اليوم سوف نتحدث عن عالم التشفير كما سنقوم ايضاً ببناء سكربت تشفير يضم تسع أنواع تشفير, لكن قبل البدء دعونا نتحدث على انواع التشفير الثلاثة وهي :


  • Symmetric Key Encryption
هذا النوع يكون له مفتاح واحد فقط للتشفير وايضاً فك التشفير,
مثل( AES - DES - 3DES ) وهو جيد في تشفير بيانات كبيرة.


  • Asymmetric Key Encryption
هذا النوع من التشفير يستخدم مفتاحان للتشفير وفك التشفير, اذا تم التشفير بمفتاح A سيكون المفتاح الآخر لفك هذا التشفير هو B .....الخ, ويكون هناك مفتاح تشفير و الآخر لفك التشفير مثل ( RSA - BASE ).


  • Hash 
هذا النوع من التشفير ليس له مفتاح فك التشفير ويجب أن تقوم بعملية الهجوم الغاشمة لفك ذلك التشفير مثل ( SHA - MD5 ).

 
دعونا لانتحدث كثيراً, هي بنا لنبدأ اليوم ببناء هذا السكربت, لكن قبل البدء يجب عليك معرفة ما هي اللغة المستعملة في بناء ذلك السكربت.

بايثون Python : هي من اقوى اللغات في هذا المجال وكما هي اللغة الذي سيتم استعاملها اليوم في البناء إذا كنت تجيد بايثون. لكن قبل البدء يجب أن اقول لك أن المكتبات المستعملة في البناء هي ( hashlib - base64 ) ويجب عليك معرفة دوال تلك المكاتب في البداية.

base64
تتمكن هذه المكتبة بإطلاق دوال لعملية التشفير و ايضاً فك ذلك التشفير, سنقوم الآن ببناء سكربت يقوم بتشفير من هذا النوع وسيكون المثال هكذا



وسيكون ناتج العملية



 سوف نشرح الكود السابق الذي في المثال, قمنا بإستحضار مكتبة base64 لأستخدام بعض الدوال الخاصة بها, و كما قمنا ايضاً بإنشاء متغير باسم name لحفظ البيانات وقمنا ايضاً بإستخدام الدالة الاولى وهي b64encode وهذه الدالة هي المسؤولة عن تشفير نوع 64. لكن ماذا إذا كنت اريد فك ذلك التشفير, لاحظ معي المثال 



في ذلك المثال قمنا بإستخدام دالة b64decode لفك التشفير من نوع 64. وكما يمكن استخدام أنوع تشفير base32  أو base16 بذلك الشكل وستكون الصورة العامة لهم بالنسبة لـ base32 
  • للتشفير 

base64.b32encode

  • لفك التشفير

base64.b32decode



بالنسبة لـ base16

  • للتشفير

base64.b16encode

  • لفك التشفير


base64.b16decode 

سنقوم الآن ببناء سكربت يقوم بتشفير الثلاث أنواع و ايضاً فك تشفيرهم



وسيكون الناتج بذالك الشكل 



hashlib تلك المكتبة تضم بعض الدوال لأستخدام التشفير, انواع التشفير داخل هذا المكتبة هي :

( sha1,sha224,sha384,sha512,sha256,md5 )
كل هذا موجود وسنتعلم كيفية استخدام دوال هذه المكتبة للتشفير من تلك الانواع المذكورة قبل قليل, وهذه الأنواع من التشفير تسمى hash ليس له مفاتيح فك تشفير ويجب استخدام الهجوم الغاشم أو التخمين لفك هذه الأنواع, و الصور العامة لأستخدام دوال المكتبة سيكون هكذا

()hexdigest.('الذي تريد ان يشفر ')نوع التشفير .hashlib

سنقوم الآن بإنشاء مثال يضم كل انواع التشفير السابقة وسيكون بهذا الشكل 



وسيكون الناتج بكل انواع التشفير



بعد أن تعرفنا على المكتبات الذي سيتم استخدامها سوف نقوم الآن بإنشاء سكربت لتلك التشفيرات الذي تم شرحها.

العملية الاولى هي استحضار المكتبات في ملف باسم hash.py  ثم اعطاء نبذه عن صاحب السكربت و الألوان وسيكون السكربت بذلك الشكل 



وسيكون الناتج بعد تشغيل السكربت بذلك الشكل 



لكن هنا يوجد شئ مفقود وهي اللوغو بإسم Ahmed kaissar إذا كنت تستخدم الكالي سيظهر اللوغو.

العملية الثانية هي عملية إنشاء مداخل الى أنواع السكربت وسيكون بذلك الشكل 



وعند التشغيل سيكون الناتج هكذا 



بعد عملية تنسيق السكربت حان الآن وقت إنشاء السكربت ليكون جاهز للتشغيل. العملية الثالثة خطوط الإنشاء وسيكون الكود هكذا 



سوف نشرح الكود السابق, نقول هنا للمستخدم إذا كنت تريد تشفير من نوع base64 اختار الرقم واحد ثم يظهر اثنان من الخيارات الأول هو اذا كان المستخدم يريد التشفير و الثاني اذا كان المستخدم يريد فك التشفير وسنقوم الآن بتشغيل الكود ونقوم بتشفير وفك التشفير 

عملية التشفير


عملية فك التشفير


الآن ذلك السكربت يعمل بتشفير وفك تشفير من نوع base64  لكن هذا لا يكفي نحن قمنا بشرح مكتبة تقوم بعملية تشفير اكثر, لذلك دعونا نكمل ما بدأناه وسيكون شكل الكود



سوف نشرح الكود السابق كما نعرف ان الرقم 2 في الاختيارات هو md5 وهنا نقوم بإضافة md5 الى السكربت وذلك يكون بإستعمال الدالة md5 من مكتبة hashlib وسيكون ناتج التشفير بذلك الشكل عند التشغيل



العملية الرابعة اضافة تشفير sha1 الى السكربت وسيكون الشكل العام للكود



الكود السابق مثل اكواد md5 فقط التغيير هنا هو المتغير و ايضاً الدالة وهي sha1 وسيكون الناتج عند التشغيل وعند إضافة كلمة programmer-tech للتشفير سيكون ناتج التشفير



الآن وقت إضافة تشفير sha224 الى السكربت وهو الخيار الرابع وسيكون شكل الكود بهذا الشكل



شرح الكود هو بمثل الاكواد السابقة فقط كل ما تغير هو التغيرات و الدالة, و الدالة المستخدمة هنا sha224 وسيكون الناتج عند التشفير بالشكل 



ناتي الآن لإضافة الرقم 5 في الخيارات وهو من نوع sha256 وسيكون شكل الكود



شرح الكود السابق لا يختلف عن سابقاته, لكن ما تغير فقط المتغيرات و الدالة, و الدالة المستعملة هنا هي sha256 وسيكون شكل الكود بالشكل



و الآن نضيف الرقم 6 الى الخيارات وهو من نوع sha384 وسيكون شكل الكود لا يختلف عن السابقات



هذا الكود لا يختلف عن السابقات فقط الإختلاف هنا هو المتغيرات و الدالة, و الدالة المستخدمة هنا هي sha384 في مكتبة hashlib وسيكون الناتج



نضيف الرقم 7 إلى السكربت وهو من نوع sha512 في الأختيارات وسيكون الكود



لا داعي لشرح ذلك الكود مثل الاكواد السابقة وسيكون شكل التشفير 



شرحنا في تعريف المكتبات أن هناك تشفير base32 و base16 داخل مكتبة base64 لكن لم نضيف اي من تلك التشفيرات, لنقوم بإضافة ذلك وسيكون الكود بالشكل 



نشرح الكود, في الحقيقة هذا الكود مثل أول كود في الاعلى وهو عن تشفير base64 وكل ما تغير في ذلك الكود هو المتغيرات و الدالة المستخدمة. بإختصار نقول للبرنامج إذا كان المستخدم اختار الرقم 8 اطبع له اثنين من الخيارات, الخيار الأول هو اذا كان يريد التشفير و الخيار الثاني إذا كان يريد فك التشفير من نوع base16, الدالة المستخدمة للتشفير b16encode ولفك التشفير b16decode

  • عملية التشفير



  • عملية فك التشفير


نأتي الآن لإضافة الرقم 9 الى الخيارات لتشفير base32 وفك التشفير وسيكون الكود



ذلك الكود لا يختلف عن الكود السابق فقط في المتغيرات و الدالة, و الدالة المستخدمة هنا هي b32encod للتشفير ولفك التشفير  دالة b32decode

عملية التشفير

عملية فك التشفير


نأتي الآن لإضافة الرقم 99 إذا كان المستخدم يريد الخروج من البرنامج وسيكون الكود بالشكل



عندما يختار المستخدم الرقم 99 فهو يريد الخروج وعند الخروج البرنامج يطبع

kaissar close Encrypt وسيكون الناتج عند الخروج



وفي حالة حدوث أي اخطاء على سبيل المثال المستخدم أختار رقم غير موجود في الخيارات سيقوم البرنامج بطبع ذلك 



الكاتب: أحمد قيصر

هناك تعليق واحد:

  1. اخي جعفر انت قولت انك ستطع رابط الموقع الخاص بكاتب ذالك المقالة
    اتمنا ان تضيف رابط الموقع الخاص بي """" https://www.programmer-tech.ml/

    ردحذف

Ads link

Ads test

Labels