MD5 Algorithm

اليوم سوف أشرح خاورزم مشهور جدا حاليا و هو الأكثر استخداما في كثير من الأمور , حيث يستخدم في تشفير كلمات المرور في أنظمة التشغيل و قواعد البيانات و هناك أيضا شكل مهم جدا من أشكال استخدامه و هو أساسا سبب عمل و ابتكار هذا الخواريزم ألا و هو المصداقية أي مصداقية البيانات و اسمها العلمي Data integrity و اللذي عند طريق نتيجه التشفير نعرف هل البيانات قد وصلت صحيحة أم خاطة والخطأ يتمثل في تغيير في البينات بالزيادة أو النقصان أو التبديل على حد سواء , و نلاحظ فائدة عندما نقوم بتحميل الملفات عن طريق برامج التورينت حيث كثير منا يحتاج ضمان اكتمال الملف المراد تنزيله ولا يحتمل هذا الملف أي أخطاء مثلا أننا نقوم بتنزيل نظام تشغيل فأي خطأ في الملف قد يتسبب في عدم عمل نظام التشغيل بشكل صحيح أو عطب الملف كاملا .

* طول مخرجات التشفير بالـ MD5 هو 128-bit و طول الرسالة الأصلية هو 512-bit و إن زادت فإنه يقوم بتقسيمها إلى Blocks و سنعرفك كيف يكون شكل ذلك بالرسم و التوضيح ولا يوجد حد أقصى لحجم الرسالة الأصلية أي أي أنك لو أدخلت رسالة حجمها 10GiB سيقبلها الMD5 و سيقسمها إلى Blocks.

* تحذير من خطأ شائع : كثير ما نسمع كلمة هاش أو Hash و نستخدمها في تداول البيانات لضمان صحت البيانات و نفرق دوما بين الهاش و الـ MD5 و هذا خطأ فادح فالـ MD5 هو خوارزم من خوارزمات الـ Hash لأن أول ما طرأت فكرة مصداقية البيانات قامو بعمل الـ Hash حيث استخدم الهاش بعدها في Message Authentication Codes (MAC) و أيضا في ال Digital Signature ولن نتوسع في هذا فالهاش طريق ليس له نهاية . إذن فمن اليوم عرفنا أن الـ MD5 هو شكل من أشكال خوارزمات الـ Hash

*إني أضمن لك إن فهمت هذا الخوازم فهم جيدا فستفهم التالي بدون أن يشرح لك أحدا : MD4 , SHA-1 , RIPEMD-160 , HMAC.

*عندما قامو بتصميم معادلة الهاش أطلقوا عليها One Way Function أي أنهم أرادوا أن يقولوا لن نحتاج و لن نستطيع فك هذه الشفرة لنعيدها إلى شكلها الطبيعي … طبعا أنت تقول و ما الفائدة من تشفير ملف و عدم استطاعتنا من استرجاع؟ و سأجاوب عليك بأن أقول : لماذا نسيت أنني قلت في البداية أن أساس تصميم الهاش هو لضمان مصداقية البيانات وليس تشفيرها ؟

و بكلامي سأضرب لك مثلا:

تخيل أنني قمت بإرسال رسالة إليك مع أحد من الناس مكتوب فيها

السلام عليكم ورحمة الله

ميعادنا اليوم إن شاء الله الساعة 10.30 مساء

تحياتي .

تخيل أن الذي ينقل رسالتي إليك قام بتعديل و تزوير الرسالة و أصبحت هكذا :

السلام عليكم ورحمة الله

ميعادنا اليوم إن شاء الله الساعة 10.30 صباحا

تحياتي .

أرأيت ؟ … الموضوع خطير جدا

ماذا لو أرسلت الرساله بهذه الطريقة التالية :

1/ أرسلت إليك معه رسالة محتواها التالي :

MD5 = d3eb64402c360513d2842ce53cf20e41

2/ ثم بعدها أرسلت معه هذه الرسالة طبعا هو لم يعلم أني سأكتب هذه اكلام في هذه المرة و قد نقل الرسالة الأولى بدون معرفة الرسالة الثناية :

السلام عليكم ورحمة الله

ميعادنا اليوم إن شاء الله الساعة 10.30 مساء

تحياتي .

الأن لا يستطيع أن يغير في الرسالة ولو غيير التغيير اللذي فرضناه في المثال السابق

السلام عليكم ورحمة الله

ميعادنا اليوم إن شاء الله الساعة 10.30 صباحا

تحياتي .

ثم قمت أنت بمقارنة الـ MD5 اللذي أرسلته لك سابقا

ستجد أن ال MD5 للرسالة المزورة هو  5aedd5a4d1ab6bbe5df190c0b767f73e

هناك فرق ؟ نعم هنا فرق و أظنك إستوعبت الفكرة جيدا .

و كما تعودنا سأقوم برسم الرسومات كاملة ثم أقوم بتفصيلها .

لنبدأ بسم الله ..


إن عملية الـ Hashing تمر بخمس خطوات جميلة و سهلة الفهم لمن لدية الخلفية في مبادئ التشفير فإني أرى أنها لا تزيد صعوبتها على من تتوافر لديهم هذا الطلب اللذي قد اشترطه في شرح الـ DES آنفا. سأسرد الخطوات بدون تفصيل أولا ثم سأفسر عند الحاجة لها في الرسمة طبعا سنشرح الخطوات كلها إن شاء الله و لكنني أحب أن أجعل خارطتك الذهني واضحة و مترابطة منذ البداية  ( لنرى الرسومات مع بعضها و ترابطها مع بعضها و لنرى كل النقاط مسرودة ثم يأتي التفصيل ) فهذي طريقتي في المذاكرة وهذه طريقتي في الشرح .

Step 1 : Append Padding bits

Step 2 : Append Length

Step 3 : Initialize MD buffer

Step 4 : Process Message in 512-bit (16-word) blocks

Step 5 : Output

الأن لإكمال جذور الشجرة  الذهنية سأضع الرسمة و ما تقدمه و تعمله من خطواتنا الخمس بالتفصيل .

ملاحظة لضمان للإستفادة المتكاملة :

* لم أضع الصور بدقة كبيرة لتنظر إليها و هي مصغرة في الموضوع فالتصغير لترتيب الموضوع أما الدقة الكبيرة لترى كل التفاصيل أي أنني أطلب منك أخي الحبيب أن تعرض الصور مكبرة قدر المستطاع .

* عند إحساسك بغياب الصورة الشاملة الأولى(الشكل:1و 2) عن ذهنك في وسط الشرح الرجاء الرجوع و إلقاء نظرة أخرى عليها و ستلاحظ في كلامي أنني قد أعيد بعض المعلومات لكي يتم الربط بين المعلومات بشكل شجري صحيح .

* عندما أطلب منك الرجوع لرسمة معينة فأرجو أن تنظر إلى كل الرسمة اللتي حدتها لك بتأني ولا تبحث بعينيك على الحرف أو الرمز المتعلق بالموضوع فقط فكل رسوماتنا متعلقة جدا ببعضها .

هيا لنفهم معنى الشكل :2 و اللتي ضم كل الخطوات لكي نفهم التفاصيل بعد ذلك خطوة خطوة مع الرسم .

إن خوارزم الـMD5 كأي خوارزم تشفير له قالب ذو مساحه معينة يقوم بتخزين الرسالة فيه و أقصد طبعا بالرسالة هي المدخلات اللتي  نريد أن نخرج لها Hash بعد عملية المعالجة و أيضا نفس الكلام ينطبق على المخرجات فهي تخضع لحجم محدد لا يزيد و لا نقص ,  فبالنسبة للـ MD5 من ناحة المدخلات فهو يتحمل طول رسالة تصل 512-bit فإن زادت عن ذلك فإنه يقوم بتقسيم الرسالة إلى أكثر من قالب أو بمعنى علمي أكثر من Block و إن نقصت عن 512-bit فإنه يخضع للمعالجة بعمليات الـ Padding و الجدير بالذكر أن المخرجات ستكون 128-bit فقط طالت أم قصرت الرسالة ولذلك فهو تشفير طول مفاتحه 128-bit و لا يجب أن ننسى ذلك , وسنبدأ نتكلم عن العمليات بالتفصيل .

Append Padding bits :Step 1

قد ذكرنا في الـ DES كلمة Padding و قلنا أنها عبارة مجموعة من الـ Bits توضع في أخر الرسالة إذا كان طول الرسالة أقصر من الـ Block size  Message اللذي يتحمله هذا النوع من التشفير أيا كان نوعه و لا بد من وجوده على الأقل و لو 1-bit و على الأكثر 512-bit طبعا هذه الأرقام خاصة بالـ MD5 لكن ال Padding توجود في كل أنواع التشفير باختلافي مساحة الـ Padding Block و قلنا أننا لن نبحر في تعريف الـ Padding لكننا سنتكلم عنه هنا فقط فيما يخص MD5 .

لننظر إلى الـ Frame الأول في الرسمة(الشكل:3) سنجد أنه يوجد ثلاثة أقسام :

Message : و هو المكان اللذي تخزن فيه رسالتنا أو مدخلاتنا .

Padding : و هو جزءنا اللذي نشرحه و نرى أن أقصى طول له 512-bit اي أنه لا يوجد رسالة في الأصل و بالتالي فإن الجزء الأخير Message Lengthلا يحمل أي قيم .

MSG Length : أي Message Length و هو جزء يتم تحديد طول الرسالة الأصلية قبل وضع الـ Padding .

إذن لو فرضنا أن طول رسالتنا الحقيقي هو 448-bits فإن طول الـPadding سيساوي 448– 512  و النتيجه 960-bits طبعا القيمة 448  تشمل الــ MSG Length لأننا ذكرنا أنا توضع قبل حساب الـ Padding .

Append Length :Step 2

هي عملية حساب طول الرسالة الحقيقي و يتم حجز فيه 64-bit مباشرة بمجرد وضع الرسالة و قبل وضلع الـ Padding و الواجب ذكره أنه هذه 64-bit ليست آخر قيمة نستطيح وضعها لطول الراسلة الأصلية كاملة ففي الحقية نستطيع وضع حتى 264 bit كقيمة لطول الرسالة الحقيقية و طبعا هذه قيمة كبيرة جدا تدل على أن الرسالة كبيرة جدا و يجب تقسيمها على أكثر من Block كما هو موضح في الرسمة في المربعات اللتي تحت المربع الكبير الأول فكل Block حجمة لا يزيد عن 512-bit (Y0,Y1 , … Yq , …. YL-1) , وبحكم أننا في جزء نتحدث فيه عن طول الرسالة فقط آن أوان توضيح بعض الرموز اللتي على الرسمة …

L  × 512bits هو طول الرسالة الحقيقية كاملة و L هو عدد الـBlocks اللتي تم تقسيم الرسالة عليها و تتضمن أيضاً الPadding و Message Length .

Initialize MD buffer :Step 3

في المربعات الحمراء (الشكل:4) يظهر لنا الــ MD5 buffer و اللذي يستقبل أو يخزن في أول buffer من اليسار أربع قيم محفوظين في Registers حجم كل واحد منها 32-bit أي أن مجموعهم 128-bit و هو ما اتفقنا عليه آنفا أن طول مفتاح ال MD5 هو 128-bit تسمى أول قيمة بــ Initial Value أو IV و قد سميت هذه الـ Registers بـ A , B , C , D على التوالي و تحمل القيم التالية بالـ Hexadecimal

A = 67452301

B = EFCDAB89

C = 98BADCFE

D = 10325476

Process Message in 512-bit (16-word) blocks :  Step4


إن قلب أي خوازرم هو تلك المربعات اللتي تضاف إلي الرسالة تقوم بعملية التشفير فمثلا عندما تريد أن تقوم بتقطيع ورقة عادية فإن قلب عملية التقطيع هو المقص أو الأداة اللتي ستقوم بتقطيع الورقة فوجب علينا التبحر في أداتنا اللتي ستضاف إلى رسالتنا لتخرج لنا التشفير و يجب أن نعرف ما هي مكوناتها كلها لكي نكون قد عرفنا فعلا ما اللذي يحدث في MD5 ليخرج لنا هذه النتائج و هذه الخطوة هو قلب موضوعنا و أتمنى منك أخي القارء التريث و التركيز في هذه الجزئية.

من الرسمة السابقة(الشكل:5) نجد هناك أربع مستطيلات فوق بعضها و تسمى الــ Round في كل Round تدخل البيانات في معالجة تمر بـ 16  خطوة أي 16 Steps كل الخطوات لها نفس الخوارزم و سنوضح خواريزم الخطوة الواحدة و اللذي هو نفس الخوارزم في كل الخطوات و الفائدة من هذه الخطوات طبعا هو زيادة تعقيد التشفير , لنبدأ بشرح الـRound أولا ثم بعدها نتغلغل داخلها لنرى الـ Steps .

الـRounds :


# هناك أربع Rounds في كل مربع مكتوب عليه HMD5 موجود في الرسمة (شكل:1) فكلهم لهم نفس البناء الخوارزمي كما ذكرنا ولكن تختلف في أنها تستخدم عدد أولي منطقي مختلف مثل F,G,H,I فقيم تلك الأعداد مختلفة (إنتبه: سنعود لنعلق على هذه الجملة الأخيرة قريبا جدا فاجعلها في هامش ذاكرتك الشجرية لكي نربطها بشكل مرتب) و بنائها الداخلي قلنا هو عبارة عن 16 Step

# كل Round تأخذ مدخلات من حجمها 512-bit من Yq (الشكل:5) حيث قيمة Yq هي الرسالة المقسمة و قد عرفنا أن الرسالة تقسم إلى Blocks كل واحد حجمة 512-bit (الشكل:3)

# تدخل قيمة الـ Yq واللتي حجمها 512-bit على Round مع دخول أيضا قيم الـ Append Length أي A,B,C,D و اللتي مجموع قيمهم 128-bit … هل تذكرهم ؟ راجع شجرتك الذهنية (الشكل:4) و يجب أن نعلم أن من كلامنا أن قيمة Yq تكون ثابتة في كل الأربع Rounds لـHmd5 buffer الواحد و تختلف طبعا من كل Hmd5 buffer و اللذي يليه بسبب إختلاف قيمة جزء الرسالة .

# نرى في ال Rounds T[1 …16] و T[17 …32] و T[33 …48] و T[49 …64] أي أن T تأخذ أرقام متغيرة و سنسندها إلى متغر نرمز له بالرمز i حيث i قيمته عدد صحيح  من 1 إلى 64 و كل رقم له قيمة ثابتة بالراديان في جدول رمزنا له بالرمز T و الأن القارئ يقول إذن ماهي T[i] ؟ فأجيبك من كلامي السابق هي القيمة بالراديان المسندة للرقم i في الجدول T . لكن … مازال من حقتك أن تعرف في ماذا و كيف عرفت أنا هذه القيم اللتي في الجدول هل هي من رأسك ؟ أم تخضع لمعادلة أم ماذا ؟
فأجيبك و أقول لا ليس من رأسي بل تخضع لمعادلة و هي:

| sin(i)| 232 ×

حيث sin(i) : قيمته ما بين واحد و صفر و كما قلنا القيمة بالراديان و | | تحني أن القيمة مطلقة أي أننا نتجاهل إشارة السالب إن وجدت

وللتسهيل .. فإننك بفضل اله لن تحتاج لحساب كل قيم ال T[i]و سأضح لك جدولا فيه كل قيم T[i] لكي ننهي هذه المسألة .. إليك الجدول :


الـ Step :

الأن جاء دور التعمق في الـ Round و قلنا أن الـ MD5 فيه 4 Rounds و قد شرحنا الشكل الخارجي للـ Round فيا ترى , ما هو الشكل الدخالي لها ؟ أجيبك الشكل الداخلي هو عبادة عن الـ 16 Step اللتي قد نوهنا عنها بدون تفصيل و قلنا أنها تحمل أن كل الـ Steps لها نفس الخوارزم و لكن فقط تختلف في قيم الأعداد الأولية F,G,H,I و اللتي قد قلنا سنعود لها لاحقا (انظر النقطة الأولى في تعريف الـ Round) , إن كل Round تمتلك ترتيبا تسلسليا من الـ Steps موجودة الـ Buffer قلنا أننا أطلقنا عليها الرموز التالية A B C D و قد وضحنا أنها تحمل قيم أيضا (انظرStep3: Initialize MD buffer )

إن تلك الـ Steps تخضع لمعادلة سهلت علينا الكثير في حساب قيمتها .. إليك المعادلة

a ← b + (( a + g (a, b, c) + X[k] + T [i] ) <<< s )

حيث :

a, b, c, d = الـ buffer اللذي فيهل الأربع قيم الأولية بترتيب محدد في كل Step

g = واحدة من القيمة الأولية الأخرى F, G , H , I أي نها متغير .

<<< s = مقدار إزاحة الـ Bits من إزاحة من اليسار إلى اليمين حيث s هو مقدار الإزاحة و >>> هو اتجاه الإزاحة, مثال : 00110  لو أزحناها بمقدار 2 من اليسار إلى اليمين ستصبح النتيجة 11000

X[k] = M[q × 16 +k] =

T[i] = و قد عرفنا شرحها سابقا (انظر النقطة الرابعة في تعريف الـ Round )

وخوازم هذه المعادلة السابقة نجده في الشكل : 6 انظر إليه ثم عد وانظر في المعادلة :


% واحدة من المتغيرات الأولية g و اللذي هي كما قلنا عبارة عن واحده من F,G,H,I تستخدم في كل Round من الـ 4 Rounds الموجده في  خوازم MD5 .

% كل متغير أولي يأخذ ثلاث مدخلات أو ثلاثة words وهم من الـ Registers b,c,d حجم كل مدخل  32-bit و نفس الحجم في المخرجات و لن نستخدم الRegister A في المدخلات لكننا سنستخدمها لاحقا و سترون ذلك (انظر الشكل:6) .

% إن شكل حساب المدخلات مع المتغيرات الأولية يخضع لمعادلة منطقية خاصة بكل Round على حدى .

% دعنا نلخص المعادلات مع أماكنها في كل Round:


سأوضح معنى العمليات :

Λ = AND

V = OR

! = NOT

> = XOR

Output : Step 5

بعد إتمام كل العمليات السابقة على كل أجزاء الرسالة L فإن المخرجات ستكون عبارة عن 128-bit و هنا ستمى هذا الـ 128-bit بالــ Message Digest

نستطيع تلخيص كل عمليات الـ MD5 في هذه المعادلة الرائعة و اللتي أفهمتني الكثير من الموضوع بشكل شخصي

CV0 = IV

CVq+1 = SUM32 [ CVq , RF1 (Yq , RFH , ( Yq , RFG (Yq , RFF (Yq , CVq )))) ]

MD = CVL-1

حيث :

IV = قيمة ابتدائية تدخل على ABCD buffer في الخطوة رقم 3

Yq = رقم ترتيب الرسالة المجزأه إلى  512-bit

L = رقم ترتيب رسالة ولكن متضمنة (padding and Length) processed with the qth block of message

CV = Channing Variable و هي ال Blocks Yq اللتي تم عليها المعالجة من الرسالة.

RFx = Round Function و هذه المعادلة تستخدم المعادلات الحسابية المنطقية .

SUM 23 = Addition modulo 232 وهي عملية جمع منطقية من نوع خاص تستطيع حسابها بالألة العلمية المتقدمة في الكمبيوتر

MD = Message Digest و هي قيمة أو ناتج الرسالة بعد التشفير .

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

يتبادر إلى ذهنك سؤال .. كيف نستطيع كسر هذا التشفير المعقد و القوي جدا ؟ و الجواب .. الطريقة هي بطريقى مقارنة الهاش بجداول ضخمة من الكلمات اللذي يقابلها الـMD5 الخاص بها … لم تفهم ؟ دعنا نقول مثال عملي سهل جدا

إذا كنت قد وضعت كلمة سر مثلا و هي

Sabri فإن الـ Md5 لها ناتجه هو a40ee2f2e5f22604be74c2a2b5fd11d5

الأن أنت تريد أن تخمن فستخمن أولا أني قد وضعت إسمي ككلمة مرور ولكنك لا تعرف كيف كتبت الكلمة فسجرب مثلا

Sbri و ناتجها ستجده : e6d337f75d38c4b016647aa1afe183f2

Sabary ناتجها ستجده : dd8ebd456b7a6f28e1c900f16bbe8b45

Sabry ناتجها ستجده : 47f5816e677805626ffca1d9a7e782fc

Sabre ناتجها ستجده : dca095c8198150f390922fb9fbada318

Sapry ناتجها ستجده : 9edb424c54488d7682b8c0158cea8d80

Sapri ناتجها ستجده : afb8413192b42f2b79e854b3bb8f97dd

لاحظت ؟ .. غير مطابقة فإن وجدت كلمة Sabri بهذا الشكل فسيقارن النواتج و ستجدها متطابقة و عندها تكون نجحت في معرفة أو كسر التشفير فالموضوع تخمين الكلمة و مقارنة الـ MD5

لتطبيق درسنا الدسم تطبيقا عمليا علميا

وفقني الله تعالي في أن أجد هذه الصفحة في موقع تعليمي يختص بتعليم السكيورتي بطريقة عليمة عملية رائعة

تفضل طبق على درسنا ..

http://nsfsecurity.pr.erau.edu/crypto/md5.html

البرامج

على بيئة الويندوز : برنامج Fsum

طريقة عمله من الـ DOS

fsum.exe OPTIONS FILE

على بيئة لينوكس : برنامج MD5

طريقه عمله من الـ Terminal

md5  file


على بيئة المتصفح Firefox (على الويندوز و اللينوكس) : إضافة HackBar

وبهذا نكون قد أخذنا تقريبا كل العلم (الفهم و الحفظ و التطبيق)

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

تحياتي :hat

29 رأي على “MD5 Algorithm

  1. أفادك الباري أخي وبارك في وقتك وصحتك

    ربي يكثر من أمثالك

    أفدتني الكثير الكثير من هذه الدرر

    جعلت هدى لمن اهتدى

  2. ماشاء الله موضوع شامل ورائع جداً

    جزاك الله خيراً 🙂

    تحياتي
    مصطفى ,

  3. @ أهلا يا وفاء جزاك الله خير على هالدعوات و الله ينفع به كل المسلمين .. نورتيني

    @ مصطفى صديقي :lol كيفك يا رجل من زمان ما شفتك و لا نورتني

    شد حيلك في المذاكرة

  4. جزاكم الله خيرا يا مان 🙂

    شرح اكثر من رائع تسلم ايدك

    وهو ده ابو الصبر تلميذى متوقعش منه غير كده طبعاً :p

    ههههههههههههههه تسلم يا مان وباذن الله احنا تلاميذك فى التشفير

    اخوك ومحبك فى الله
    Br1ght D@rk

  5. موضوع اكثر من رائع

    بارك الله فيك يا عم صبرى

    تقبل تحياتى

  6. ايه يا صبرى ده :lol

    موضوع شامل وبيفكرنى بموضوع تشفير DES :good

    على العموم ربنا يوفقك وان شاء الله الناس تستفاد

    بيه وانا هسميك Encryption Geek :hat

  7. موضوع كويس جدا يا صبرى والجميل اكثر انك شارح الطريقتين على لينكس وويندوز ايوة كده يا باشا طلع اللى فى دماغك ده
    وخللى الشعب يعيش :lol

    ربنا يوفقك يا باشا وينفعك بعلمك وينفع بيك الناس

    تقبل تحياتى :hat
    اخوك ..

  8. r0x c0d3r## شكرا يا r0x على زيارتك و نورتني يا حبوب

    DC = D3v!c0d3 ## صديقي :p نورتني يا حبوب و على فكرة الموضوع ده أثقل من ال DES كمان و عايز تركيز

    M ## إهلا يا محمد كل مره بتكسل تكتب إسمك كده :angry2

    الله يكرمك يا رب يا حبي و ربنا يقدرنا و نقدم شي مفيد نورتني يا جميل

  9. جزاك الله كل خير
    حببتني في السكيورتي
    أن شاء الله لي رجعة بس بعد الأمتحانات

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

    يارجل كان لازم تذكرنا بالـ sin والـ cosin ؟ :her
    هذول ولا أطيقهم وكرهت الرياضيات بسببهم …

    أشكرك جزيل الشكر أخوي العزيز على الموضوع وصدقني تعب أسبوع لم يذهب سداً وكل حرف سيتعلمه الناس منك لك إن شاء الله عليه حسنة والله يضاعف لمن يشاء …

    أعذرني على مداخلتي المتأخرة، ولكنك تعلم بالحال … الله يوفقك إن شاء الله ولا تحرمنا من إبداعاتك يا وحش التشفير :p

    دمت بود …

  11. abuoof## جزانا و إياك يا عبد الله و السكيورتي عالم ممتع جدا خاصة إن ذهنك لا يتوقف على التفكير .. خلي الواحد يرجع يحس بالقطعه إللي أعلى الجسم و ما يستخدمها كثير :haha

    الله يعينك في إختباراتك و يوفقك يا رب

  12. الدكتور B!n@ry ## يا ألف مرحبا بك يا أبو محمد

    * يا راجل تكرم عن الجحود و الكذب و سلامة قلبك من هالصفات

    * بالنسبة لل Sin ههههههههههه و مين قال إني أحبها هههههههه إللي يهتمون بالسكيورتي عندهم أشياء محدده في الرياضيات بس إللي يهتمون فيها
    – العمليات الحسابية المنطقية
    – قوانين الإحتمالات علشان الـ Brute Force هههههههههه
    و بس ههههههههه بس و الله حرصت أن ضع كل ما يحتاجه القارئ لفهم من أين أتت المعلومة للأمانة العلمية :typ

    و الله يعينك يا ابو محمد و يبارك في وقتك و جهدك و تفرحنا بإللي ننتظره يا رب و معذور يا رجل إنته أخوي و عارف أحاولك
    ربنا يديم المعروف

    طبعا إنته عارف إنك نورتني من غير ما أقول :p

    تحياتي :hat

  13. صراحة لم اتوقع ان اجد ان الموضوع سوف يكون بهدا لتفصيل الكبير . استفدك من كل حرف كتب قرئة المقالة مرتين لاستوعبها جيدا لاهميتها . لانه شئ بنتعامل معه يوميا ولا نعرف كيف يعمل .. ومرحبا بي في مدونتك :lol

  14. djekmani4ever## مرحبا بك أخي و لا تعلم سعادتي عندما أسمع هذه الكلمات اللتي يعلم الله أنها تنسيني تعبي في شرح مثل هذه المواضيع

    و دليل قرائتك للموضوع أكثر من مرة أنك أنسان تبحث عن المعرفة و التحرر من استعمال أدوات كل الناس يستخدمونها و قل من يعرف ماهي و كيف و لماذا

    نورتني و الله يا أخي

  15. Salam
    Thank you Mr SABRI for you subject, it was soooooooooooooo intersting for me and i see that you are (may a developer ) or someone advanced in security and cryptology.
    anyway i want to ask -as your experience- you don’t think that using a big and great prime number is so better ? i’m tolking about the rest of Euclidean division after convert it to a number of (n)Base.
    but the probleme that it’s not an application only result …
    lot of think swim in my mind about this if you can tell us anythink about
    Thank you
    Sala7 (SyB0)

    NB:i’m so sory about the english but i can’t tape in arabic so sorry

  16. SyB0 # أهلا بك أخي صلاح و تشرفت بزيارتك , كلامك صحيح وطبعا الأعداد الأولية الكبيرة أفضل لكن نظام التشفير اللذي تستخدمه يجبرك على طول مفتاح معين لن يزيد و لن ينقص

    إذا طلع مفتاح التشفير قصير : يكمل الباقي (Padding = حشو )
    إذا طلع مفتاح التشفير طويل : يحذف ال bits الزيادة من اليمين إلى اليسار

    – بالنسبة لكتابتك بالإنجيليزي فلا مشكلة أبدا إذا كنت لا تستطيع ذلك لكن نحاون أن نكتب بالعربي قد المستطاع لأن المدونه لكل العرب فالأجانب عندهم ما يكفيهم من مراجع إلى مئة عام قادمة .

  17. موضوع خرافي
    ولكنه أيضا يبعث على الأسف خصوصا لما أرى صفحة ويكيبيديا العربية عارية وهناك من يستطيع أن يملأها
    أقصد هذا الرابط أخي http://ar.wikipedia.org/wiki/%D8%A5%D9%85_%D8%AF%D9%8A5
    إن شاء الله نرى موضوعك هذا هناك وبالطبع يمكنك أن تضع في المصادر الخارجية مدونتك وهذا من حقك.
    ولأنك مع هذا أثريت محرك البحث غووغل بمعلومات جديدة فأنا أشكرك وإن كان لا يمثل إلا شكرا وأضيف:
    بارك الله فيك وفي الوالدين والأهل جميعا وإن شاء الله عمل مقبول ومأجور عليه عند الله.

  18. T-coeur: يا 100 مرحبا بك يا أخي و مبارك عليك الشهر , تقبله الله منك قبول حسن و جميع المسلمين يارب

    نعم لك كل الحق في كلامك و هذا من أخطائي اللتي وقعت فيها

    لكن عذري الوحيد اللذي (قد) أراه مقبولا هو أن الكتابه في ويكيبيديا فعلا صعبه , تختلف عن الكتابه في المدونه أو في المنتديات

    لكن بحكم أني أهتم بكلامك , سأحاول فعلا أن أضع هذا الموضوع و موضوع الـ DES في الويكيبيديا عندما تسنح الفرصه من الوقت

    جزاك الله خير يا خوي و سامحني على أي تقصير

  19. مبارك علينا وعليكم الشهر وتقبل الله منا ومنكم الصيام والقيام.
    كنت أعرف من الأول أنني أتحدث مع ضمير حي ومتأكد -بإذن الله- أنك ستقوم بالواجب.
    وأنا معك في صعوبة تحرير مقالات الويكي.

  20. شكرا لك اخي على الموضوع
    لان الكثير استفاديت من الهاش وانواعها  وانواع التشفير خوارزميات MD5

  21. مرحبا انا طالبه في السنه الثالثة بكالوريوس علم حاسوب واخذ مادة data structuure advance ابيك تفيدني في هذه الماده قد ما تقدر وجزاك الله خير على موضوعك لانه مطلوب مني شرحه في محاضره وانا ما اعرف شي عن التشفير جزاك الله خير

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

    تحياتي و احترامي

  23. جزاك الله الف خير وبميزان حسناتك ان شاء الله
    يسلمو وربنا يزيدك من العلم والمعرفه ويباركلك بحياتك

  24. شكرا علي الموضوع الجميل ده وكان عندي سؤال
    الhash function موجوده جاهزه في لغات البرمجة يعني ممكن استدعيها عالطول ولا لازم اعرفها الاول

  25. هل من الممكن برمجة الخوارزميه بال ++c و افيدونا بالكود اذا امكن .
    وعظم الله اجرك

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *