كتبت "والمفاتيح هي أساس التشفير" نعم هي أساس التشفير في طرق التشفير الثنائي الأتجاه

لأنه هناك أنواع من التشفير وحيدة الأتجاه (تشفير فقط بدون فك التشفير) مثل md4, md5 ,SHA-1

كتبت مشاركة خجولة عن نفس الموضوع ولكن لغة PHP هذا نص المشاركة

لن أتحدث عن تاريخ التشفير و كيف بداء. سندخل في المهم وهو أنواعه:
1- متماثل
مثل DES أو (Data Encryption Standard) و 3 DES
http://kingkong.me.berkeley.edu/~kenneth/courses/sims250/des.html

و IDEA أو (International Data Encryption Algorithm)
http://www.mediacrypt.com/engl/Content/technical_description.htm

2- غير متماثل
مثل RSA
http://www.di-mgt.com.au/rsa_alg.html

و DSA أو (Digital Signature Algorithm)
http://www.ntu.edu.sg/home/ayxyan/efinance/dsa.txt

3- التشفير الأحادي الأتجاه
مثل MD5 أو (Message Digest)
http://www.faqs.org/rfcs/rfc1321.html

و SHA-1 أو (Secure Hash Algorithm)
United States Secure Hash Algorithm
غير متوفره الطريقة لأنه خاص بالحكومة الأمريكية و 160 بت

المهم كيفية تفعيل التشفير في PHP سهله جداً
1- نزل الملف و ضعه في C:\windows\System32
http://ftp.emini.dk/pub/php/win32/mcrypt/libmcrypt.dll

في ملف PHP.ini الموجود في مجلد windows
شل الفاصلة المنقوطة من أمام extension=php_mcrypt.dll

أرجو من الأخوان المهتمين بالتشفير قراءة

http://uk2.php.net/manual/en/ref.mcrypt.php
 

 


 

و كتبت موضوع عن التطبيق على التشفير و أيضاً تطبيق بسيط لتشفير المتغيرات في ال URL بحيث أنه محد يقدر يطلع على المتغيرات في عنوان الصفحه (زيادة حماية) :read

هنا أعيد نشره لتعم الفائدة

 


 

جميعنا يعاني من المخربين و عبثهم في مواقعنا عن طريق ثغرات بسيطة في برامجنا. و أهم هذه الثغرات
1- وضع المتغيرات في الكوكي من غير تشفير أو بتشفير و لكنه يبقى واضح أن هذا المتغير مشفر و يمكن فك تشفيرة.

2- أرسال المتغيرات عن طريق المتصفح
مثال:

http://www.c4arab.com/newpost.php?threadid=30073

المتغير threadid قيمته 30073 ...... و تطول المسئله مع طول المتغيرات .....

كيف يمكنا التغلب على هذه المشكلة؟
بطريقة سهله و بسيطة و بمساعدة سلاسلة لغة PHP و التشفير سنصنع برنامج لن تتعرف على متغيراته.

لنفرض أن لدينا برنامج مكون من ملفين.
1- الملف الأول 1.php يستعلم من قاعدة البيانات و يستخرج القيم id,pid,cat
و سنرسلها عن طريق المتصفح للملف الثاني 2.php
فأكيد أننا سنطبع في الملف الأول

 

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

 

تشريح الكود:
أسناد القيم 1،2،3، للمتغيرات id,pid,cat (كأنك مستخرجها من قاعدة بيانات)
طباعة المتغيرات الثلاثة
 

جمع المتغيرات في متغير واحد مع إضافة (:) لكي نستطيع أسناد قيم المتغيرات للمتغيرات id,pid,cat في الملف الثاني.
 

1- الدالة تحتاج الى متغيرين (المتغير المراد تشفيره ، و مفتاح التشفير)
2- ننتج رقم عشوائي لأننا سنحتاجه للمتغير (MCRYPT_RAND)
3- نشفر المفتاح ب MD5
4- نفتح مكتبة التشفير (mcrypt) عن طريقة الدالة mcrypt_module_open و هنا نختار نوع التشفير و المود (نوع التشفير des) المود (cfb)
5- نتأكد من أعلى حجم للمفاتح و هل يدعمها نوع التشفير هذا أم لا
6- ننشىء القيمة الإبتدائية العشوائية IV
7- نتأكد أنه لم يبداء التشفير
8- نبداء التشفير
9- ننهي التشفير
10-نغلق مكتبة التشفير
11- إضافة القيمة الإبتدائية العشوائية الى الرسالة المشفرة

 

أنشاء مفتاح وهو foo
تشفير الرسالة بأستعداء دالة my_encrypt
طباعة المتغير بعد التشفير
أنشاء رابط و تشفير الرسالة المشفرة بالدالة urlencode زيادة حماية :laugh:
بتعرفون ليش فقط ممر الماوس على الرابط ثم أضغط علية بعدها بتعرف ليش تشفيرين :g:

نجي للملف 2.php
 

دالة فك التشفير و هي مماثلة لدالة التشفير
الفرق هنا الدالة mdecrypt_generic لفك التشفير ;)

نتأكد أن المتغير var موجود ثم نطبعه
نفك تشفير urlencode عن طريق دالة urldecode
نطبع مرة أخرى
نفك تشفير DES عن طريق

نطبع المتغير بعد فك التشفير
نفك المتغيرات الثلاثة من المتغير var عن طريق دالة explode
يا حبي لل PHP صدق اللي قال أنه أحسن لغة برمجة ويب.

 

أو

 

نطبع متغيراتنا الثلاثة أو نستخدمها في برنامجنا

دوال التشفير و فك التشفير مأخوذة من موقع PHP.net على هذا الرابط

http://uk2.php.net/manual/en/function.mcrypt-create-iv.php

الموضوع كتب بتاريخ 02 /04 /2004 لموقع مجموعة PHP العربية


تحياتي
أخوكم / محمد



 

1