مقدمة إلي إخفاء المعلومات - الجزء الأول

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

إخفاء حرف واحد فقط في صورة
الخطوات التالية توضح الكود مع تفسير لكل سطر في الكود
 
الخطوة الأولي : تحديد و تعريف الحرف


Dim chr As Char = "A"c
الخطوة الثانية : تحويل الخرف الي بايت

Dim b As Byte = Convert.ToByte(chr)
 الخطوة الثالثة : تعريف متغير عبارة عن لون و ذلك باستخدام قيمة البايت من الخطوة الثانية

Dim clr As Color = Color.FromArgb(b, b, b, b)
الخطوة الرابعة : تعريف متغير عبارة عن صورة و هنا سوف أقوم ببناء صورة صغيرة بأبعاد مناسبة

Dim bmp As Bitmap = New Bitmap(20, 20) 
الخطوة الخامسة : الأن نملأ الصورة باللون الموجود في الخطوة الرابعة وهذا يتم باستخدام الجرافكس

Using g As Graphics = Graphics.FromImage(bmp)
      g.Clear(clr)
End Using
و هنا انتهت المهمة و تم اخفاء الحرف في صورة
 
إسترجاه الحرف من الصورة

الخطوة الأولي : نحدد اللون عن طريق تحديد بكسل تقع في نطاق وأبعاد الصورة

Dim pixColor As Color = bmp.GetPixel(10, 10)

الخطوة الثانية : الحصول علي قيمة الحرف مرة أخري


Dim result As Char = Convert.ToChar(pixColor.A)
ملاحظات

  تستطيع التحكم في ابعاد الصورة كيفما شئنا لكن ابعادها لا يجب ان تقل عن 2 لأن هذا هو الرقم المعقول و الأسهل لك لكي تستطيع استخلاص البيانات من الصورة لاحقا
  ليس شرطا عند تعريف اللون ان نستخدم نفس قيمة البايت التي تعير عن الحرف لتحديد قيمة الأحمر و الأخضر والأزرق
لكن شرطا ان قيمة ِالشفافية الخاصة باللون هي التي يجب أن تساوي قيمة البايت الخاصة بهذا الحرف
و السببب في ذلك ان قيمة الأحمر والأخضر والأزرق قد تتغير بدون أن تشعر بسبب ابعاد الصورة و تكوين البكسل نفسه لكن قيمة الشفافية ستظل ثابتة و لن تتغير مطلقا
في الصورة الحديثة اي صورة عادية قد تجد بها ما لايقل عن خمسة عشر الف لون  و بعملية حسابية بسيطة تستطيع ان تخفي خمسة عشر الف حرف أو خمسة عشر الف بايت في داخل تلك الصورة


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

Private Function ConvertCharToBitmap(chr As CharOptional w As Integer 2Optional h As Integer 2) As Bitmap
        Dim bmp 
As Bitmap = New Bitmap(wh)
 
       Using g As Graphics Graphics.FromImage(bmp)
 
           g.Clear(Color.FromArgb(Convert.ToByte(chr), 000))
 
       End Using
        Return bmp
    End 
Function

 
   Private Function ConvertBitmapToChar(bmp As BitmapOptional x As Integer 1Optional y As Integer 1) As Char
        Return CType
(Convert.ToChar(bmp.GetPixel(xy).A), Char)
 
   End Function 
 
و الكود التالي يوضح كيفية استخدام الدوال أعلاه

حويل الحرف الي صورة
        Dim bmp As Bitmap = ConvertCharToBitmap("D"c)
        ' 
الحصول علي الحرف و إظهار الحرف بشكل ما
        Me
.Text ConvertBitmapToChar(bmp).ToString
        
' إظهار الصورة بشكل ما
        Me.BackgroundImage = bmp 
 

Comments

Popular posts from this blog

مقدمة الي تشفير الحروف الأبجدية العربية

VB.NET Translucent Control using GDI+

Add Custom Event to a Class in VB.NET