الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التشفير بواسطة Serializition

بدأه بهاء صلاح الدين في 19 سبتمبر 2008 · 3 رد · 930 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني اعضاء المنتدى ، السلام عليكم و رحمة الله و بركاته.....

سأقدم لكم اليوم موضوعا" هاما" و هو Serialization.

عندما تريد ارسال بيانات من برنامج لبرنامج آخر فعليك ان تحول هذه البيانات الى بيانات من نوع Object

فمثلا" لديك برنامج تسوق عبرالانترنت و تريد ارسال رقم credit card الى برنامج آخر .

سيحدث ان يتم تحويل رقم الكارت الى بيانات object ، تسمى هذه العملية Serializition اي تشفير للبيانات .

عندما يستقبل البرنامج الآخر هذه البيانات فانه سيفك هذا التشفير و يحول البيانات من object الى حالتها الأصلية تسمى هذه العملية Deserializition.

يفيد Serializition في :

-حفظ حالة البرنامج.

-تبادل البيانات عبر الشبكة.

-نسخ البيانات من برنامج لآخر.

تنقسم عملية تحويل البيانات الى object الى نوعين:

-Binary Serializition:يستخدم عند تبادل البيانات من برنامج لآخر على نفس الجهاز.لا يقرأه سوى برنامج معمول بالدوت نت.

-Xml Serialixition:مفيد في تبادل البينات عبر الشبكة حيث يحولها الى ملفات من نوع xml و يفيد هذا في منع القرصنة عبر الشبكة.أو عند اختلاف platforms الموجودة على الأجهزة.

من الأمور الشائعة لاستخدام serializition هي حفظ اسم الدخول و كلمة السر لمستخدم أو تعديل هذه البيانات عند الضرورة.

في هذا المثال سنقوم بحفظ بيانات مستخدم جديد:

-قم باضافة صنوقي نص و عنوانين

-قم باضافة زر و سمه btn_save.

-سم صناديق النص كالآتي:txt_account , txt_pass

-اكتب في خاصية text للعنوانين:اسم المستخدم ، كلمة المرور

-في البداية استخدم فضاءاءات الاسم التالية:

using System.IO;
using System.Collections.Generic;
using System.Collections;
using System.Runtime.Serialization.Formatters.Binary;

-تحت زر btn_save اكتب الكود التالي:

//اسم الملف الذي ستحفظ فيه البيانات و امتداه".data"
                string name = txt_account.Text + ".data";

                ArrayList arr = new ArrayList();

                //عمل array list لوضع البيانات فيها.

                //اضافة البيانات
                arr.Add(txt_account.Text);
                arr.Add(txt_pass.Text);

  // stream  لعمل ملف
                FileStream fs = new FileStream(name, FileMode.Create);

                //عمل instance من class BinaryFormatter الذي سيقوم بتشفير البيانات الى النوع binary.
                BinaryFormatter bf = new BinaryFormatter();

                //تشفير البيانات
                bf.Serialize(fs, arr);

                // غلق stream
                fs.Close();

                //تم حفظ البيانات في ملف يحمل الاسم الذي ادخلته في صندوق نص اسم المستخدم+".data"
  //ستجد الملف موجود في مجلد bin و عندما تفتحه ببرنامج notebad فستجد رموز و أرقام غريبة لن يفهم منها شيئا". 
                MessageBox.Show("تم الحفظ بنجاح");

- قم بعمل نموذج آخر و ضع عليه صندوقي نص و عنوانين و زر

-اكتب الكود التالي تحت الزر:

//اسم الملف الذي ستقٌرأ البيانات بداخله
            string file = textBox1.Text + ".data";

            // عمل instance من class fileinfo  للبحث عن الملف
            FileInfo f1 = new FileInfo(file);

            // شرط وجود الملف
            if (f1.Exists)
            {
                FileStream fs = new FileStream(file, FileMode.Open);
                BinaryFormatter bf = new BinaryFormatter();

                // فك تشفير البيانات و تحويلها من object الى نوعها الأصلي arraylist.
                ArrayList arr = (ArrayList)bf.Deserialize(fs);

                // ملأ listbox استعدادا لمقرنة البيانات المدخلة من المستخدم بها
                for (int i = 0; i < arr.Count; i++)
                {
                    listBox1.Items.Add(arr.ToString());
                }
                fs.Close();

                // مقارنة البيانات
                if (textBox1 .Text ==""||textBox2 .Text ==""||comboBox1 .Text ==""||textBox1.Text != listBox1.Items[0].ToString() || textBox2.Text != listBox1.Items[1].ToString()
                    || comboBox1.SelectedItem.ToString() != listBox1.Items[2].ToString())
                {
                    MessageBox.Show("اسم الدخول او كلمة المرور خطأ");
                }

                else if (textBox1.Text == listBox1.Items[0].ToString()
            && textBox2.Text == listBox1.Items[1].ToString()
            && comboBox1.SelectedItem.ToString() == listBox1.Items[2].ToString())
                {
                    MessageBox.Show("البيانات صحيحة");
                }

اتمنى ان يكون الموضوع مفيدا" ...... و السلام عليكم و رحمة الله و بركاته

:lol: :lol: :lol: :lol: :lol:

#2

فقط تصحيح بسيط على عنوان الموضوع الSerialization لا يساوي تشفير, الSerialization يقوم كما ذكر بتحويل الObject الى صورة يمكن أن تنتقل من الذاكرة الى أي وسيط اخر سواء ملف أو Network و هذا لتسهيل نقل البيانات بين البرامج و الخدمات...

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#4

مشكور على البرنامج و لكن اردت فقط اضافه معلومه صغيره

الى ثلاث أنواعserializationنقسم

1 Binary Serialization

2 Soup Serialization

3 XML Serialization

وجزاك الله خيرا على المجهود الرائع

مواضيع مشابهة