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

سؤال في تشفير الصور

مغلق
بدأه Ammar Gaffar في 16 مايو 2004 · 15 رد · 3,356 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الي كل من يميل الي الـ Security في البرمجة , كيف يمكنني أن أقوم بتشفير الصور بإستخدام أي خوارزمية من خوارزميات التشفير مثلاً الـ Symmetric Algorithm .

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

ولكم جزيل الشكر

#2

ملفات الصور هي ملفات ثنائية Binary files أي ملفات غير نصية.

لدي فكرة مفادها أن يتم التعامل معها كأنها ملفات نصية ، أي فتحها كملفات نصية وقراءة block من البيانات الموجودة فيها وتشفيرها وكتابة النص المشفر إلى ملف نصي آخر.

أما الكود فأمهلني فيه قليلا.

فكر بطريقة أخرى

#3

هذا البرنامج سيقوم بتشفير أي ملف نصي أو ثانئي:

Private Sub Encrypt(Path as string, Key as Integer)
        Dim BWrite As System.IO.BinaryWriter
        Dim BRead As System.IO.BinaryReader
        Dim SRead As System.IO.StreamReader
        Dim SWrite As System.IO.StreamWriter
        Dim Buffer As Byte
        Dim Arr1() As Byte
        Dim Arr2() As Byte
        Dim Counter As Long

          SRead = New IO.StreamReader(Path)
        BRead = New IO.BinaryReader(SRead.BaseStream)

        'Read The File to an Array
        Do
            Try
                Buffer = BRead.ReadByte
                ReDim Preserve Arr1(Counter)
                Arr1(Counter) = Buffer
                Counter += 1
            Catch ex As Exception
                BRead.Close()
                SRead.Close()
                Exit Do
            End Try
        Loop

        'Encrypt the Array
        ReDim Arr2(Arr1.Length - 1)
        For Counter = 0 To Arr1.Length - 1
            Arr2(Counter) = Arr1(Counter) Xor 12
        Next

        'Wrtie The Encrypted File
        SWrite = New IO.StreamWriter(Path & "En")
        BWrite = New IO.BinaryWriter(SWrite.BaseStream)
        BWrite.Write(Arr2)
        BWrite.Close()

End Sub

Private Sub Decrypt(Path as String, Key as Integer)
        Dim BWrite As System.IO.BinaryWriter
        Dim BRead As System.IO.BinaryReader
        Dim SRead As System.IO.StreamReader
        Dim SWrite As System.IO.StreamWriter
        Dim Buffer As Byte
        Dim Arr1() As Byte
        Dim Arr2() As Byte
         Dim Counter As Long

        SRead = New IO.StreamReader(Path)
        BRead = New IO.BinaryReader(SRead.BaseStream)

        'Read The File to an Array
        Do
            Try
                Buffer = BRead.ReadByte
                ReDim Preserve Arr1(Counter)
                Arr1(Counter) = Buffer
                Counter += 1
            Catch ex As Exception
                BRead.Close()
                SRead.Close()
                Exit Do
            End Try
        Loop

        'Encrypt the Array
        ReDim Arr2(Arr1.Length - 1)
        For Counter = 0 To Arr1.Length - 1
            Arr2(Counter) = Arr1(Counter) Xor 12
        Next

        'Wrtie The Encrypted File
        SWrite = New IO.StreamWriter(Path.Substring(0, Path.Length - 2))
        BWrite = New IO.BinaryWriter(SWrite.BaseStream)
        BWrite.Write(Arr2)
        BWrite.Close()

End Sub

طريقة أستخدام البرنامج استخدم ال Sub الأول Encrypt لتشفير الملفات و قم أضف اسم الملف إلى Path و أي رقم بين 1 و 255 في Key

سوف تحصل على ملف بنفس الأسم في نفس الموقع و بإضافة En ‘لى نهاية اسم الملف.

امسح الملف غير المشفر أو غير موقعه أو اسمه و قم باستخدام ال Sub الثاني Decrypt لفك التشفير ولا تنسى أن تعطيه أسم الملف المشفر في Path و نفس القيمة اللتي استخدمها في Key. و سوف تحصل على ملفك الأصي مرة أخرى في نفس الموقع و نفس الأسم.

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

أرجو أن تكون معلومة متكاملة

Hardware

تم تعديل هذه المشاركة بواسطة walcom في 23 فبراير 2006 في 20:00

#4

معذره ولكن ماو ال SYMMETRIC ALOGRITHM

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#5

الأخ طارق

هل تسأل عن ماهية الsymmetric algorithm - التشفير المتماثل؟

هي خوارزمية تشفير تستخدم نفس المفتاح للتشفير وفك التشفير. من شهر هذه الخوارزميات : DES - Digital Encryption Standard.

وعكسها الAsymmetric Algorithm وهي تستخدم مفتاحين لا علاقة ببعضهما البعض، ومن أشهر هذه الخوارزميات RSA (سميت اختصارا لأسماء مخترعيها).

فكر بطريقة أخرى

#6

شكراً على التوضيح ولكن يبدو انى لم اوضح السؤال جيداً كيف يمكن تطبيق هذه الخوارزميه على تشفير الصور

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#7

الأخ hardware مشكورا استعمل طريقة XOR للتشفير .

ما قصدته هو برنامج يقرأ البيانات من ملف الصورة بنفس طريقة القراءة من الملف النصي ، وتشفيره باستخدام كائن من أحد أصناف الAsymetric Cryptography في فضاء الأسماء System.Security.Cryptography في مكتبة Net. ، ومن ثم تخزين التشفير الناتج في ملف آخر.

عندما قلت أن asymmetric cryptography يستخدم مفتاحين لا علاقة ببعضها البعض ، فأعني أنه لا يمكن اكتشاف أحدهما من الآخر، ويستعمل أحدهما لتشفير ، والآخر لفك التشفير.

فكر بطريقة أخرى

#8

توجد عدة صور لتحقيق التشفير المتماثل ,, مثلا يمكن استخدام المصفوفات بحيث نحول النص الحقيقي الى حاصل ضرب مصفوفتين ,, وفي علم الرياضيات توجد خوارزميات لتحويل المصفوفة التي تنطبق عليها شروط معينة "ويمكن تحقيق هذه الشروط بسهولة" الى حاصل ضرب مصفوفتين يرمز لهما ب Q * R ,,

عموما يمكن تخيل أي خوازمية أخرى لذلك ,,

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

بالتوفيق ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#9

تحية لكل من شاركنا الراي والمعلومة في موضوع التشفير ...

لكن مازال تساؤلي قائماً :

هنالك أنواع كثيرة من ملفات الصور مثل : Gif,JPG وغيرها من الملفات . وكل ملف يتم التعامل معه بصورة مختلفة عن الاخر في قراءة بلوكات البيانات . أي نجد أن بعض الملفات تقرأ بالبايت الواحد كل مرة وأخري تقرأ 4 بايت في كل مرة .. وهكذا .

السؤال :

كيف يمكنني أن أجد برنامج يقوم بالتعامل مع جميع هذه الأنواع في عملية التشفير ؟ أو يتعامل معها جميعاً باسلوب قياسي واحد ؟

أما بالنسبة لتشفير الصورة : كيف يتم تشفير الصورة بالخوارزمية Symmetric Algorithm بحيث يمكن فتح الملف ومعاينته بعد تشفيره ويجب أن تكون الصورة المشفرة لها نفس الامتداد (نوع الملف) قبل عملية التشفير مع ظهورها غير واضحه (مشفرة) .

وقل ربي زدني علما

السودان في قلوبنا

#10

من فضلكم

ممكن مثال على التشفير المتماثل والشفير الغير متماثل

وجزاكم الله خيرا

#11

من أهم صفات التشفير المتماثل أو (السبب الذى سمى متماثل لأجله) هو أن مفتاح التشفير هو مفتاح فك التشفير .

يوجد بعض الخوارزميات السهله هنا و البعض الصعب والمعقد جدا مثل AES .

يمكن تشفير الملفات النصيه عادى جدا و كما ذكر الأخوه فإنه يعتمد فى الخوارزم المستخدم على إستبدال مجال الحروف النصيه (ال 26) بجميع الحروف الموجوده (0 -- 256 ) و بإستخدام داله تقوم بفت الملف و تقرأه فى متغير نصى أو تقرأه blocks ومن ثم الخوارز يعمل عادى جدا مثل المثال الذى وضعه Hardware .

#12

ممكن مثال على التشفير المتماثل والشفير الغير متماثل

#13

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

البايت وهى مكونة من 8 خانات - - - - - - - -

البايت مكونة من واحدات 1 و اصفار 0

نفترض ترتيب البتات او الخانات كالتالي 0 1 2 3 4 5 6 7

تصور لو عملت هذه الدوال لا ادرى ان كانت موجودة ولكن بالامكان انشائها

بدل (1)

بدل (2)

بدل(4)

بدل(س،ص) {0=<س<8، 0=<ص<8}

دور يمين (ك) {1=<ك<8}

دور يسار (ك) {1=<ك<8}

اعكس(ك) {0=<ك<256}

مع ملاحظة ان دور يمين و دور يسار يمكن اختصارهم في دالة واحدة كذلك ممكن الاستغناء عن الدوال بدل(1) و بدل(2) و بدل(4) باستخدام بدل (س،ص) ولكن يتطلب اوامر اكثر لاداء نفس المهمة.

نذكر اننا نفترض ترتيب البتات او الخانات كالتالي 0 1 2 3 4 5 6 7

الدالة بدل(1) ستفعل التالى 1 0 3 2 5 4 7 6

الدالة بدل(2) ستفعل التالى 2 3 0 1 6 7 4 5

الدالة بدل(4) ستفعل التالى 4 5 6 7 0 1 2 3

الدالة بدل(2،6) كمثال ستفعل التالى 0 1 6 3 4 5 2 7

الدالة دور يمين(2) كمثال ستفعل التالى 2 3 4 5 6 7 0 1

الدالة دور يسار(3) كمثال ستفعل التالى 5 6 7 0 1 2 3 4

دالة اعكس هي XOR وهي في الحقيقة ليست دالة بل هي امر واحد لدى وحدة المعالجة المركزية CPU وتتم بين البايت والحرف المراد تشفيره

وهي ببساطة ستقوم بعكس الواحدات 1 الى اصفار 0 والاصفار 0 الى واحدات 1 لكل خانة واحد في الرقم المعطي والباقي يبقي دون تغيير.

مثال على اعكس XOR

الحرف المراد تشفيره مثلا ك= 01110010

سنجري 7 XOR ك

01110010

00000111

__________

01110101 النتيجة

لاحظ ان الخانات الخمسة على الشمال لازالت مطابقة للاصل واول 3 خانات يمين تم عكسهم.

ساتوقف

تم تعديل هذه المشاركة بواسطة عماد الخليل في 29 يوليو 2004 في 14:38

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#14

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

قام الأخ عماد جعفر بطرح أسئله حول تشفيير الصور ( وهي صوره من صور البيانات )

وقام العديد من الاخوه بالرد على استفساره بصوره جميله وبأكثر من اسلوب

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

فمثلا برنامج winzip يقوم بهذه العمليه و ACDSEE يقوم بضغط ال Bmp ال jpg وتوجد برامج ال codecs التي تقوم بضغط ملفات الفيديو .

ولكن أهمهم بالنسبه لهذا الموقف فهو winzip حيث أنه يقوم بفك التشفير ( فك الضغط ) دون أي فقد في البيانات.

طبعا هذه الطريقه تفيد جدا في مجال التشفير والاتصالات.

و أعتقد أن هذه الطريقه تستخدم المصفوفات وخصائصها في عمليات الاختصار دون ضياع اي معلومه.

أحمد

#15

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

تم تعديل هذه المشاركة بواسطة عماد الخليل في 30 يوليو 2004 في 14:33

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#16

وجدت مثالا للتشفير المتماثل ولكن هذا التشفير بالنسبة للنصوص فقط والمثال مرفق

ولكن هل من معين علي تطبيق هذه الخوارزمية علي ملفات الصور

Security - Encrypt and Decrypt Data.zip

هذا الموضوع مغلق.

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