![]() |
|
التشفيير في إتجاه واحد - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : التشفيير في إتجاه واحد (/showthread.php?tid=15103) |
التشفيير في إتجاه واحد - silverlight - 14-03-16 السلام عليكم ورحمة الله وبركاته التشفير موضوع هام جدا و هناك أساليب كثيرة لتشفير البيانات وحفظها في ملفات والتشفير في إتجاه واحد هو واحدا من أساليب التشفير الهامة و تكمن فكرته في أننا تقوم بتشفير البيانات ولكننا لا نستطيع ان تعيد البيانات مرة أخري إلي حروفها الأصلية وهنا قد يتساءل البعض و ما الهدف و كيف نستفيد من هذا الأمر؟ عموما و لمزيد من الإطلاع يوجد في موقع مايكروسوفت مثالا للتشفير في إتجاه واحد باستخدام MD5 - HashAlgorithm و المثال الخاص بمايكروسوفت بسيط و سهل جدا ويوضح كيفية التشفير و التأكد من التشفير ما الهدف من التشفير في إتجاه واحد؟ الأمر متروك غالبا لرؤية المبرمج في كيفية استخدام هذا النوع من التشفير لكن أهم أهداف التشفير في إتجاه واحد هو تشفيير كلمات السر التي تستخدم غالبا للدخول الي المواقع الإلكترونية او التي تستخدم في الدخول الي برنامج او إلي قاعدة بيانات تم حمايتها بكلمة سر معينة و في هذا الموضوع لن نستخدم المثال الخاص بمايكروسوفت بل سوف نوضح كيفية التشفير في إتجاه واحد باستخدام انواع مختلفة من HashAlgorithm ثم نتأكد أن التشفير يعمل بشكل جيد فكرة التشفير في إتجاه واحد تكمن في الخطوات التالية: 1- تحويل String الي Byte Array 2- نقوم بحساب Hash لهذه Byte Array و ذلك باستخدام واحدا من HashAlgorithm الموجودة في فضاء الأسماء System.Security.Cryptography و الناتج سيكون عبارة عن Byte Array أيضا 3- ثم أخيرا نقوم بتحويل العناصر و التي هي عبارة عن numeric value و الموجودة في تلك Byte Array إلي ما يكافئها من Hexadecimal String أي ان الناتج النهائي هو عبارة عن Hexadecimal String عموما التشفير الناتج من هذه العملية قد يكون عبارة عن String طويل جدا ولكن يمكن التحكم في طول هذا String واختصاره الي طول أقل الكلاس التالي يمكن استخدامه في تشفيير كلمات السر أو في تشفير اي كلمة معينة ثم نتأكد لاحقا من أن كلمة السر صحيحة PHP كود : Imports System.Security.Cryptographyفي المرفقات ستجدون فكرة لكيفية الاستفادة من الكلاس و مثالا لكيفية استخدامه المصادر: Encoding.GetBytes HashAlgorithm.ComputeHash BitConverter.ToString SHA512Managed Class RE: التشفيير في إتجاه واحد - myalsailamy - 14-03-16 كلام جميل و مهم لكل مبرمج ان يعرفه و من المواضيع التي افضل مناقشتها اكثر من الاسئله الاعتياديه في المنتدى ،، التشفير في اتجاه واحد مفيد في حالات عدة و لكن كحصر في كلمة المرور البعض يتسائل بعد تشفير البيانات وحفظها بقاعدة البيانات كيف استفيد منها ، الطريقه وهو عند تسجيل مثلا دخول المستخدم لمره اخرى تاخذ الباسورد الذي قام بادخالها تقوم بتشفيرها كما فعلت معها لاول مره عند حفظها ، ثم تقوم بالمقارنه التشيفر بالتشفير المحفوظ اذا كان مطابق فانه قام بادخال البيانات الصحيحه عكس ذلك فلا يسمح له بنسبه لي انا استخدم تشفيرات معينه مشهوره مثل MD5 و لكن اضع طابعا لي بعد تشفيرها بخوارزميه و هي مثلا اعادة الترتيب للنص المشفر بحيث انه في حالة قدرة المهاجم على كسر اي تشفير تبقى البيانات خطا بالنسبه له تحياتي RE: التشفيير في إتجاه واحد - silverlight - 14-03-16 هنا انا استخدمت SHA512Managed و ليس MD5 و في دالة التشفير قمت باختيار عدد معين من البايت و ليس كل البايت الناتجة من الدالة ComputeHash وللتوضيح أكثر طول التكست الناتج من الدالة ComputeHash غالبا خليط من أرقام و حروف و طوله لن يقل عن 128 حرف و هذا طبعا بعد ان نحذف منه العلامة "-" و هنا ما يحدث انه وكل 8 بايت يتم اختيار بايت واحدة و في النهاية طول التكست الناتج عن التشفير لن يتعدي 16 حرفا وهذا كان الهدف من الكلاس وهو تقليل طول التكست عموما و كما تفضلت من الممكن أن تضيف اي علامة الي String كنوع من الحماية الإضافية و إن شاء الله لاحقا سوف اقوم بَاضافة مثال اخر لكيفية استخدام الكلاس بدون ان تكون به الباسوورد المراد تشفيرها و لكنها ستكون موجودة في ملف مرفق مع المشروع و لنري من سوف يستطيع كسر هذا التشفير أصلا الكلاس الفعلي انا كتبته بأسلوب مختلف تماما حيث أن عملية التشفير تتم علي خمسة مستويات و الكلاس الموجود هنا فقط للعلم كفكرة عن الموضوع RE: التشفيير في إتجاه واحد - myalsailamy - 15-03-16 جميل يا اخي silverlight جربته و كان تمام بس فيه نقطه بسيطه جدا كمبرمج لو نشرت الكلاس الخاص بك من حيث الية الاستخدام خليها بهذا الشكل : كود : Dim oHasher As New Hasherو الكلاس يتم تعديله : كود : Public Function Verify(ByVal input As String, ByVal hash As String) As Booleanلانه ايحاء input يدل على ادخال النص بدون تشفير عندما قمت باستخدام الكلاس الخاص بك بدون انزال المثال المصغر على العموم ليست بالمعضله الكبيره مجرد ملاحظه من تجربة مستخدم لكلاس مفتوح المصدر ___________________________________ النقطه الأهم من تعليقي وهو رغبتي بالحصول على كلاس للتشفير و فك التشفير ذو اتجاهين اذا كنت تملك واحده و ناتج التشفير قصير قم بمشاركتنا اياها لانها تهمني في ASP.Net تحياتي لك RE: التشفيير في إتجاه واحد - CLARO - 15-05-16 افدتني شكرا لك RE: التشفيير في إتجاه واحد - egbest2 - 29-05-19 شكرا لك اخى الكريم على الموضوع المفيد _______________________________________________ التسامح الحق لا يستلزم نسيان الماضي بالكامل.. سينما كلوب ايجي بست شاهد فور يو سيرا اون لاين مشاهدة فيلم |