بكل طرق التشفير يبقى هناك نص للبيانات عندما تعترض من قبل العدو يشكك في كونها رسالة مشفرة ويحاول ان يفكها بكل طرق التشفير فمثلا طرق تشفير التي نعرفها مشهورة حاليا يعرفها الجميع ومثلما نستطيع ان نشفر نص بها يستطيع العدو ان يحاول فك النص بها .حتى طرق تشفير جديدة التي نحن نبنيها لا يعرفها غيرنا يبقى العدو يحاول فكها. الذي نريده نحن ان معترض الرسالة (العدو) لا يشك اصلا بوجود رسالة مشفرة لأننا سنخفيها داخل صورة فلا يفكر اصلا بوجود نص مشفر او نخفيها بصورة بين 100 صورة مرسلة فيصعب على المعترض إيجادها ومن ثم فكها.
هناك طرق عديدة لإخفاء نص داخل صورة معينة وأفضلها وضع النص في LSB لكل Gray Scale حيث يمثل هذا البت رقم واحد فقط مثلا اذا كان في Gray Scale معين رقم زوجي يكون LSB صفر واذا فردي يكون واحد أي إننا اذا غيرنا هذا البت بواسطة اخفاء بيانات في داخله أي تغير في قيمته لا يؤثر على الصورة كثيرا فهو يغير الأضائه بمقدار واحد فقط من اصل 255 أي لا يسبب بأثر واضح يجعل الشخص يشك بوجود نص مشفر داخل الصورة أي مثلا لو كان Gray Scale لموقع معين (161) لو خزنا في LSB له قيمة (0 ) يصبح Gray Scaleلهذا الموقع يساوي 160 ولو خزنا فيه (1) يبقى (161 )
Matlab Code 3d rgb
clc
clear
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
text='hi';
ascm=double(text);
binasc=dec2bin(ascm);
[rt, ct]=size(binasc);
%we use 2D image tospeed op.
%imageDCE=rgb2gray(x);
%we use one line to relase line of code// show who image effect by text
% imageDCE=imageDCE(1:4,1:4);
%saved old shap it convert to one line
%[r c]=size( imageDCE);
%if we use 3D image--------------
[r c f]=size( x);
imageBIN=dec2bin( x);
%------------------------
% convert image to binary
%imageBIN=dec2bin( imageDCE); % cover it to one col 8bit and row=r*c
% imageBIN(:,8)=0; % put zero in all LSB in image
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
%imageBIN(:,8)=binasc(1:end)
% UINT8 Convert to unsigned 8-bit integer. becuse it convert to one bit
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c,f ));
subplot(1,2,1)
imshow(x)
subplot(1,2,2)
imshow(ENCimageDCE)
% figure
%imageBIN(1:rt*ct,:)=0;
% ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
%imshow(ENCimageDCE)
% to sure of encrption binasc(1:8),imageBIN(1:8,8) show that who image is
% encripted
decriptext=dec2bin(ENCimageDCE);
textbin=decriptext(1:rt*ct,8);
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
messageDEc= char(ascimessage)'
تحميل المقالة من هنا او حمل من هنا
هناك طرق عديدة لإخفاء نص داخل صورة معينة وأفضلها وضع النص في LSB لكل Gray Scale حيث يمثل هذا البت رقم واحد فقط مثلا اذا كان في Gray Scale معين رقم زوجي يكون LSB صفر واذا فردي يكون واحد أي إننا اذا غيرنا هذا البت بواسطة اخفاء بيانات في داخله أي تغير في قيمته لا يؤثر على الصورة كثيرا فهو يغير الأضائه بمقدار واحد فقط من اصل 255 أي لا يسبب بأثر واضح يجعل الشخص يشك بوجود نص مشفر داخل الصورة أي مثلا لو كان Gray Scale لموقع معين (161) لو خزنا في LSB له قيمة (0 ) يصبح Gray Scaleلهذا الموقع يساوي 160 ولو خزنا فيه (1) يبقى (161 )
خطوات الإخفاء على صورة عادية gray
1. نقرئ الصورة الملونة وثم نحولها الى عادية وبعدها نجد ابعاد المصفوفة وتساعدنا ابعاد المصفوفة على اعادة الصورة الى شكلها الاصلي بعد خزن النص في داخلها
Matlab Code 2d gray image
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
imageDCE=rgb2gray(x);
[r c]=size( imageDCE);
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
imageDCE=rgb2gray(x);
[r c]=size( imageDCE);
2. نحول الصورة الى النظام الثنائي(Binary) حتى نستطيع ان نغير البت الثامن الايمن LSB
3. ندخل النص المرد إخفائه ونحوله الى AScii Code ومنه الى النظام الثنائي ونجد عدد الصفوف وعدد الأعمدة له حتى نستطيع ان ننقل بايتات كل حرف الى داخل البتLSB في الصورة حيث كل بايت من بايتات الحرف سيخزن في البنت الثامن الأيسر لموقع معين في الصورة
4. ألان نخزن كل بت من البتات السبعة من كل حرف داخل صف من صفوف الصورة في العمود الثامن الذي يمثل LSB ثم ننتقل للبت المقابل في الكلمة الثانية ونستمر حتى اخر حرف ثم نرجع لثاني بت بأول كلمة ثم ثاني بت بثاني كلمة ونستمر. أي كلما ازداد حجم النص ازدادت صعوبة فك شفرة شاهد الصورة لا يعرف المعترض ماهي بنات الصورة وما هي بتات النص
Matlab Code 2d gray image
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
بواسطة i نحدد من أي موقع داخل الصورة نبدأ بعملية الإخفاء
5. ألان أخفينا النص داخل الصورة ألان نحول الصورة من النظام الثنائي الى النظام العشري ونعيد ابعاد المصفوفة الى أبعادها الاولية باستخدام داخلة reshape ونشاهد ان الصورة تحولت بصيغية رقم واحد نستخدم دالة uint8 لنعيدها الى صيغة رقم عشري بثمانية بت
Matlab Code 2d gray image
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
6. نقوم برسم الصورة قبل وبعد خزن النص في داخلها
اعادة النص المشفر من الصورة
1. نحول الصورة التي اخفينا النص في داخله الى صيغة النظام الثنائي
Matlab Code 2d gray image
decriptext=dec2bin(ENCimageDCE);
decriptext=dec2bin(ENCimageDCE);
2. ناخذ البت الثامن من كل صف ونخزنه في مصفوفة جديدة ونلاحظ انه يجب ان يرسل لنا صاحب الرسالة المشفرة عدد صفوف وعدد اعمدة النص المشفر ومن اين يبدأ التشفير داخل الصورة حتى نستطيع أخراجه .
في هذه الحالة يجب ان نقول للمستلم الصورة توضيح عن النص المرسل وهو نقول له عدد الاحرف rt وعدد Bit لكل حرف
ct
حتى نستطيع ارجاع النص من داخل الصورة (مثلا النص الخزن داخل الصورة هوا 17 حرف كل حرف من 8 بت اي rt=17,ct=8 )
Matlab Code 2d gray image
textbin=decriptext(1:rt*ct,8);
textbin=decriptext(1:rt*ct,8);
3. نعيد تحجيم المصفوفة النص الى شكلها الأولي بصيغة النظام الثنائي ونحولها من النظام الثنائي الى النظام العشري .
Matlab Code 2d gray image
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
4. نحول البيانات من العشري الى الحروف ونضع علامة (‘) لكي تعرض بشكل صفوف
كود برنامج الإخفاء وإعادة النصوص كامل لصورة عادية
Matlab Code 2d gray image
clc
clear
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
text='bad friend maked you bad';
ascm=double(text);
binasc=dec2bin(ascm);
[rt, ct]=size(binasc);
%we use 2D image tospeed op.
imageDCE=rgb2gray(x);
%we use one line to relase line of code
%imageDCE=imageDCE(1:4,1:4);
%saved old shap it convert to one line
[r c]=size( imageDCE);
% convert image to binary
imageBIN=dec2bin( imageDCE); % cover it to one col 8bit and row=r*c
% imageBIN(:,8)=0; % put zero in all LSB in image
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
%imageBIN(:,8)=binasc(1:end)
% UINT8 Convert to unsigned 8-bit integer. becuse it convert to one bit
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
% ENCimageDCE(1:rt*ct)=0; to show area of hide
subplot(1,2,1)
imshow(imageDCE)
subplot(1,2,2)
imshow(ENCimageDCE)
% figure
%imageBIN(1:rt*ct,:)=0;
% ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
%imshow(ENCimageDCE)
% to sure of encrption binasc(1:8),imageBIN(1:8,8) show that who image is
% encripted
decriptext=dec2bin(ENCimageDCE);
textbin=decriptext(1:rt*ct,8);
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
messageDEc= char(ascimessage)'
clc
clear
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
text='bad friend maked you bad';
ascm=double(text);
binasc=dec2bin(ascm);
[rt, ct]=size(binasc);
%we use 2D image tospeed op.
imageDCE=rgb2gray(x);
%we use one line to relase line of code
%imageDCE=imageDCE(1:4,1:4);
%saved old shap it convert to one line
[r c]=size( imageDCE);
% convert image to binary
imageBIN=dec2bin( imageDCE); % cover it to one col 8bit and row=r*c
% imageBIN(:,8)=0; % put zero in all LSB in image
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
%imageBIN(:,8)=binasc(1:end)
% UINT8 Convert to unsigned 8-bit integer. becuse it convert to one bit
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
% ENCimageDCE(1:rt*ct)=0; to show area of hide
subplot(1,2,1)
imshow(imageDCE)
subplot(1,2,2)
imshow(ENCimageDCE)
% figure
%imageBIN(1:rt*ct,:)=0;
% ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
%imshow(ENCimageDCE)
% to sure of encrption binasc(1:8),imageBIN(1:8,8) show that who image is
% encripted
decriptext=dec2bin(ENCimageDCE);
textbin=decriptext(1:rt*ct,8);
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
messageDEc= char(ascimessage)'
كود برنامج الإخفاء وإعادة النصوص كامل لصورة ملونة
Matlab Code 3d rgb
clc
clear
x=imread('C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg');
text='hi';
ascm=double(text);
binasc=dec2bin(ascm);
[rt, ct]=size(binasc);
%we use 2D image tospeed op.
%imageDCE=rgb2gray(x);
%we use one line to relase line of code// show who image effect by text
% imageDCE=imageDCE(1:4,1:4);
%saved old shap it convert to one line
%[r c]=size( imageDCE);
%if we use 3D image--------------
[r c f]=size( x);
imageBIN=dec2bin( x);
%------------------------
% convert image to binary
%imageBIN=dec2bin( imageDCE); % cover it to one col 8bit and row=r*c
% imageBIN(:,8)=0; % put zero in all LSB in image
for i=1:1:rt*ct
imageBIN(i,8) =binasc(i);
end
%imageBIN(:,8)=binasc(1:end)
% UINT8 Convert to unsigned 8-bit integer. becuse it convert to one bit
ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c,f ));
subplot(1,2,1)
imshow(x)
subplot(1,2,2)
imshow(ENCimageDCE)
% figure
%imageBIN(1:rt*ct,:)=0;
% ENCimageDCE=uint8(reshape(bin2dec(imageBIN),r,c ));
%imshow(ENCimageDCE)
% to sure of encrption binasc(1:8),imageBIN(1:8,8) show that who image is
% encripted
decriptext=dec2bin(ENCimageDCE);
textbin=decriptext(1:rt*ct,8);
ascimessage=bin2dec(reshape(textbin ,rt,ct ) );
messageDEc= char(ascimessage)'
تحميل المقالة من هنا او حمل من هنا
هناك 8 تعليقات:
السلام عليكم ..شكرا على موقعكم الراائع ..لكن اريد ان اتعلم كيف ابرمج عمل ocr لتحويل الصورة الى نص وشكرا ..
وعليكم السلام ؟؟
طريقة تحويل الصورة الى نص موجودة في الشرح
اقرئي الشرح جيدا
شكرا جزيلا على هذا الشرح الوافي وجزاك الله عنا خير الجزاءn
السلام عليكم ورحمة الله
عاشت ايدك استاذ حسين على هذا الشرح الوافي وجزاك الله عنا خير الجزاء
سلام
هناك اخطاء في تنفيذ الكود
وبلاخص ام reshape
هل مستعد ان نتعاون معا في تصحيح الاخطاء
اولا من اي مصدر جلبتها
السلام عليكم اخي ل نسخة الماتلاب التي انت تستخدمها قديمة او فيها نقص ملفات استخدم نسخة
Matlab R2010a
وسيعمل بشكل طبيعي
السلام عليكم
اخ حسين ماجاي يتنفذ عندي البرنامج اكو مشكله بالreshape ,كانت نسختي قديمه2008 والان نصبت 2013 ونفس المشكله ياريت تساعدني اني طالبة ماجستير قسم هندسة الاتصالات بالجامعه التكنلوجيه وموضوع بحثي عن stegnography وماعندي اي خلفيه عن image processing
السلام عليكم
اخ حسين ماجاي يتنفذ عندي البرنامج اكو مشكله بالreshape ,كانت نسختي قديمه2008 والان نصبت 2013 ونفس المشكله ياريت تساعدني اني طالبة ماجستير قسم هندسة الاتصالات بالجامعه التكنلوجيه وموضوع بحثي عن stegnography وماعندي اي خلفيه عن image processing
إرسال تعليق