LSB图片信息隐藏隐藏实验_第1页
LSB图片信息隐藏隐藏实验_第2页
LSB图片信息隐藏隐藏实验_第3页
LSB图片信息隐藏隐藏实验_第4页
LSB图片信息隐藏隐藏实验_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目: 院系:计算机科学与技术学院 专业年级: 信息安全2012级 学生姓名:涂桂花 学号:20123333 指导教师:魏为民 2015年4月14日 目录一、实验目的1二、实验内容和步骤11. 操作环境12. 系统配置13. 操作步骤1 4. 程序源代码5三、实验结果51. 测试图片52. 测试结果53.截屏6四 实验小结61. 遇到的问题总结合分析:62. 未解决的问题103. 实验效果和分析104. 总结:10附件:11上 海 电 力 学 院实 验 报 告 LSB信息隐藏实验信息安全课程名称 实验项目 信息安全2012252201

2、23333涂桂花姓名 学号 班级 专业 2015.4.14无同组人姓名 指导教师 魏为民 实验日期 一、实验目的1.用MATLAB函数实现LSB信息隐藏和提取。2.了解信息隐藏的作用和实现方法原理。3.学会分析了解隐藏算法。二、实验内容和步骤如操作环境、系统配置、操作步骤、程序源代码等。1. 操作环境操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )2. 系统配置处理器AMD E1-2100 APU with Radeon HD Graphics 双核3. 操作步骤1) 打开MATLAB软件,新建文件夹名为“ LSB ”。2) 在“Command Window”

3、窗口里输入“guide”,回车。a. 如下图所示建立图形界面。将5个push button控件的“String”属性设置为下图相应显示的名字,Tag属性设置为pbt+String名的格式。将4个axec控件的Tag属性设置为如下图所显示的名字。3) 分别右键点击5个push button控件,View Callbacks->CallBacks.给每个控件添加Callback代码。再添加代码之前要为该fig文件命名。我在本次实验命名为LSB3333.fig。各个控件的代码如下: % - Executes on button press in pbtCover.function pbtCov

4、er_Callback(hObject, eventdata, handles)% hObject handle to pbtCover (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gCover;gCover,sFile=loadimg();if isempty(gCover) msgbox('Cover image is empty!',

5、'Warning','warn','modal'); return;endaxes(handles.axCover);imshow(gCover);iH iW iL=size(gCover);sMsg=sFile,'',num2str(iH),'*',num2str(iW),'*',num2str(iL),''set(handles.text1,'String',sMsg); % - Executes on button press in pbtSecret.func

6、tion pbtSecret_Callback(hObject, eventdata, handles)% hObject handle to pbtSecret (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gSecret;gSecret ,sFile=loadimg();if isempty(gSecret) msgbox('Secret ima

7、ge is empty!','Warning','warn','modal'); return;endaxes(handles.axSecret);imshow(gSecret);iH iW iL=size(gSecret);sMsg=sFile,'',num2str(iH),'*',num2str(iW),'*',num2str(iL),''set(handles.text1,'String',sMsg); set(handles.text2,'St

8、ring','Secret Image'); % - Executes on button press in pbtEmbed.function pbtEmbed_Callback(hObject, eventdata, handles)% hObject handle to pbtEmbed (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)glob

9、al gCover gSecret gStego;if isempty(gCover) msgbox('Cover image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endif isempty(gSecret) msgbox('gSecret image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endHc,Wc,Lc=size(gCover

10、);Hs,Ws,Ls=size(gSecret);if (Hc=Hs) | (Wc=Ws) | (Lc=Ls) disp('Error: Not Match!' ); return;end gStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7);imwrite(gStego, 'emTmp.bmp' );axes(handles.axStego);imshow(gStego,); % - Executes on button press in pbtExtract.function pbtExtr

11、act_Callback(hObject, eventdata, handles)% hObject handle to pbtExtract (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gStego;global gCover gSecret;if isempty(gCover) msgbox('Cover image is empty!'

12、; , 'Warning' , 'warn' , 'modal' ); return;endif isempty(gSecret) msgbox('gSecret image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endHc,Wc,Lc=size(gCover);Hs,Ws,Ls=size(gSecret);if (Hc=Hs) | (Wc=Ws) | (Lc=Ls) disp('Error: Not Matc

13、h!' ); return;end gStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7);imwrite(gStego, 'emTmp.bmp' );axes(handles.axStego);imshow(gStego,); if isempty(gStego) msgbox('Stego image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endimExtract = ui

14、nt8(bitand(255,bitshift(gStego,7);imwrite(imExtract, 'exTmp.bmp' );axes(handles.axExtract);imshow(imExtract);msgbox('Extracted Image: exTmp.bmp' , 'Finished' ); % - Executes on button press in pbtExit.function pbtExit_Callback(hObject, eventdata, handles)% hObject handle to p

15、btExit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)q=questdlg('Are you sure to exit?','figLSB','Yes','No','No');if strcmp(q,'No') return;enddelete *.*%delete (h

16、andles.figLSB);delete (LSB3333);4) 将测试图片或者图片文件夹放在LSB文件夹下。最后点击保存。4. 程序源代码见附件。三、实验结果1. 测试图片1 隐藏载体图:Leno图片信息2 隐藏秘密图:Boy图片信息2. 测试结果1 隐藏后的图片信息:2 从隐藏后的图中提取出来的秘密图片信息:3.截屏4 实验小结1. 遇到的问题总结合分析:(1)问题:点击退出按键后选择退出Yes,不能完全退出。解决方法:查看源代码,经过分析,代码没有错,但是没有实现退出该fig图形窗体而是仅仅退出了询问是否退出的box的小窗口。经过改正源代码后,可实现完全退出。更改后的代码如下【即将原

17、来的delete(handles.figLSB)改为delete(LSB3333)】:q=questdlg('Are you sure to exit?','figLSB','Yes','No','No');if strcmp(q,'No') return;enddelete *.*%delete (handles.figLSB);delete (LSB3333);(2)问题:老师提供的代码会出现如下图片的一些问题。1 没有选择Secret Message图片也能进行信息图片的隐藏和提取2 没有添加

18、Cover图片也能进行信息的隐藏和提取3 没有添加Cover和Secret图片,不能进行信息隐藏,却能进行信息提取解决方法:分析老师提供的源代码后,进行改进可解决上述出现的问题,即在没有选择Cover图片或者Secret图片的时候,都不能进行信息隐藏和提取。结果截图如下:2. 未解决的问题1 问题描述:没有点击Cover控件和Secret控件选择Cover或者Secret图片或者不选择,也能进行隐藏和提取。分析:没有设计代码判断axec控件是否有图片内容。2 问题描述:对于不同格式或者不同大小或者灰白和彩色不同的图片不能进行信息图片的隐藏和提取。分析:本实验代码只能对同种格式且大小相同的图片进

19、行信息图片的隐藏和提取,对于不同格式大小相同或者格式相同大小不同的图片不能进行隐藏和提取。3. 实验效果和分析1 LSB算法的抗攻击能力本实验算法比较简单,抗攻击能力弱。2 随机选择嵌入位(安全性因素的考虑)本实验算法不能随机选择隐藏信息图片的嵌入位,在本程序中设置的为程序默认值,不能提供安全性,可设计随机生成0-7的随机数对信息图形的不同位置随机进行嵌入。再增加隐藏和提取的用户口令则会使安全性更好。3 嵌入位均匀分布于载体每次对图像的一个字节的同一个位嵌入,都是同一个位置,这导致分布不均匀。若实现随机嵌入图像的不同字节时不同嵌入位可提高嵌入位的均匀分布于载体。4 信息提取的检错/纠错本实验提

20、取出来的图片和原本要隐藏的信息图片不一样。4. 总结:本实验比较简单,在理解了图形信息隐藏的实质和代码的意义后就能很快理解和掌握。不足的是不能将带算法优化已解决遇到的各种问题。将会在以后的学习当中注意知识的积累和灵活运行。附件:源代码:function varargout = LSB3333(varargin)% LSB3333 MATLAB code for LSB3333.fig% LSB3333, by itself, creates a new LSB3333 or raises the existing% singleton*.% H = LSB3333 returns the ha

21、ndle to a new LSB3333 or the handle to% the existing singleton*.% LSB3333('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in LSB3333.M with the given input arguments.% LSB3333('Property','Value',.) creates a new LSB3333 or raises the% existing

22、 singleton*. Starting from the left, property value pairs are% applied to the GUI before LSB3333_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to LSB3333_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools

23、menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help LSB3333 % Last Modified by GUIDE v2.5 14-Apr-2015 10:08:25 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = stru

24、ct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', LSB3333_OpeningFcn, . 'gui_OutputFcn', LSB3333_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(

25、varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before LSB3333 is made visible.function LSB3333_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no

26、 output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to LSB3333 (see VARARGIN) % Choose default command line output for LSB3333handles.outp

27、ut = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes LSB3333 wait for user response (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = LSB3333_OutputFcn(hObject, eventdata, handles) % varargout ce

28、ll array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Execute

29、s on button press in pbtCover.function pbtCover_Callback(hObject, eventdata, handles)% hObject handle to pbtCover (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gCover;gCover,sFile=loadimg();if isempty(gC

30、over) msgbox('Cover image is empty!','Warning','warn','modal'); return;endaxes(handles.axCover);imshow(gCover);iH iW iL=size(gCover);sMsg=sFile,'',num2str(iH),'*',num2str(iW),'*',num2str(iL),''set(handles.text1,'String',sMsg); %

31、 - Executes on button press in pbtSecret.function pbtSecret_Callback(hObject, eventdata, handles)% hObject handle to pbtSecret (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gSecret;gSecret ,sFile=loadimg

32、();if isempty(gSecret) msgbox('Secret image is empty!','Warning','warn','modal'); return;endaxes(handles.axSecret);imshow(gSecret);iH iW iL=size(gSecret);sMsg=sFile,'',num2str(iH),'*',num2str(iW),'*',num2str(iL),''set(handles.text1,'

33、;String',sMsg); set(handles.text2,'String','Secret Image'); % - Executes on button press in pbtEmbed.function pbtEmbed_Callback(hObject, eventdata, handles)% hObject handle to pbtEmbed (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure

34、 with handles and user data (see GUIDATA)global gCover gSecret gStego;if isempty(gCover) msgbox('Cover image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endif isempty(gSecret) msgbox('gSecret image is empty!' , 'Warning' , 'warn' , '

35、;modal' ); return;endHc,Wc,Lc=size(gCover);Hs,Ws,Ls=size(gSecret);if (Hc=Hs) | (Wc=Ws) | (Lc=Ls) disp('Error: Not Match!' ); return;end gStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7);imwrite(gStego, 'emTmp.bmp' );axes(handles.axStego);imshow(gStego,); % - Executes o

36、n button press in pbtExtract.function pbtExtract_Callback(hObject, eventdata, handles)% hObject handle to pbtExtract (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global gStego;global gCover gSecret;if isempty(gCover) msgbox('Cover image is empty!' , 'Warning' , 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论