《LSB图片信息隐藏隐藏实验精选文档21390.pdf》由会员分享,可在线阅读,更多相关《LSB图片信息隐藏隐藏实验精选文档21390.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 LSB 图片信息隐藏隐藏实验精选文档 TTMS system office room【TTMS16H-TTMS2A-TTMS8Q8-上海电力学院 高级程序设计(C)课程设计报告 题 目:院 系:计算机科学与技术学院 专业年级:信息安全 2012 级 学生姓名:涂桂花 学号:指导教师:魏为民 2015 年 4 月 14 日LSB信息隐藏实验 目录 上 海 电 力 学 院 实 验 报 告 课程名称 实验项目 姓名 学号 班级 专业 同组人姓名 指导教师 魏为民 实验日期 一、实验目的 1.用 MATLAB 函数实现 LSB 信息隐藏和提取。2.了解信息隐藏的作用和实现方法原理。3.学会分析了解隐
2、藏算法。二、实验内容和步骤 如操作环境、系统配置、操作步骤、程序源代码等。1.操作环境 操作系统 Windows 7 旗舰版 64 位 SP1(DirectX 11)2.系统配置 处理器 AMD E1-2100 APU with Radeon HD Graphics 双核 3.操作步骤 1)打开 MATLAB 软件,新建文件夹名为“LSB”。2)在“Command Window”窗口里输入“guide”,回车。a.如下图所示建立图形界面。将 5 个 push button 控件的“String”属性设置为下图相应显示的名字,Tag 属性设置为 pbt+String 名的格式。将 4 个 axe
3、c控件的 Tag 属性设置为如下图所显示的名字。信息安全 LSB信息隐藏实验 涂桂花 2012252 信息安全 无 3)分别右键点击 5 个 push button 控件,View Callbacks-CallBacks.给每个控件添加 Callback 代码。再添加代码之前要为该 fig 文件命名。我在本次实验命名为。各个控件的代码如下:%-Executes on button press in pbtCover.function pbtCover_Callback(hObject,eventdata,handles)%hObject handle to pbtCover(see GCBO)
4、%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!,Warning,warn,modal);return;end axes;imshow(gCover);iH iW iL=size(gCover);sMsg=sFile,num2str(iH)
5、,*,num2str(iW),*,num2str(iL),;set,String,sMsg);%-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)
6、global gSecret;gSecret,sFile=loadimg();if isempty(gSecret)msgbox(Secret image is empty!,Warning,warn,modal);return;end axes;imshow(gSecret);iH iW iL=size(gSecret);sMsg=sFile,num2str(iH),*,num2str(iW),*,num2str(iL),;set,String,sMsg);set,String,Secret Image);%-Executes on button press in pbtEmbed.func
7、tion 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)global gCover gSecret gStego;if isempty(gCover)msgbox(Cover image is empty!,Warning,warn,moda
8、l);return;end if isempty(gSecret)msgbox(gSecret image is empty!,Warning,warn,modal);return;end Hc,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,);axes;imshow(gStego,);%-Ex
9、ecutes on 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(g
10、Cover)msgbox(Cover image is empty!,Warning,warn,modal);return;end if isempty(gSecret)msgbox(gSecret image is empty!,Warning,warn,modal);return;end Hc,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(gS
11、ecret,-7);imwrite(gStego,);axes;imshow(gStego,);if isempty(gStego)msgbox(Stego image is empty!,Warning,warn,modal);return;end imExtract=uint8(bitand(255,bitshift(gStego,7);imwrite(imExtract,);axes;imshow(imExtract);msgbox(Extracted Image:,Finished);%-Executes on button press in pbtExit.function pbtE
12、xit_Callback(hObject,eventdata,handles)%hObject handle to pbtExit(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;end delete*.*%delete;delete(LSB3
13、333);4)将测试图片或者图片文件夹放在 LSB 文件夹下。最后点击保存。4.程序源代码 见附件。三、实验结果 1.测试图片 隐藏载体图:Leno 图片信息 隐藏秘密图:Boy 图片信息 2.测试结果 隐藏后的图片信息:从隐藏后的图中提取出来的秘密图片信息:3.截屏 四实验小结 1.遇到的问题总结合分析:(1)问题:点击退出按键后选择退出 Yes,不能完全退出。解决方法:查看源代码,经过分析,代码没有错,但是没有实现退出该 fig 图形窗体而是仅仅退出了询问是否退出的 box 的小窗口。经过改正源代码后,可实现完全退出。更改后的代码如下【即将原来的 delete()改为 delete(LSB
14、3333)】:q=questdlg(Are you sure to exit,figLSB,Yes,No,No);if strcmp(q,No)return;end delete*.*%delete;delete(LSB3333);(2)问题:老师提供的代码会出现如下图片的一些问题。没有选择 Secret Message 图片也能进行信息图片的隐藏和提取 没有添加 Cover 图片也能进行信息的隐藏和提取 没有添加 Cover 和 Secret 图片,不能进行信息隐藏,却能进行信息提取 解决方法:分析老师提供的源代码后,进行改进可解决上述出现的问题,即在没有选择 Cover 图片或者 Secr
15、et 图片的时候,都不能进行信息隐藏和提取。结果截图如下:2.未解决的问题 问题描述:没有点击 Cover 控件和 Secret 控件选择 Cover或者 Secret图片或者不选择,也能进行隐藏和提取。分析:没有设计代码判断 axec控件是否有图片内容。问题描述:对于不同格式或者不同大小或者灰白和彩色不同的图片不能进行信息图片的隐藏和提取。分析:本实验代码只能对同种格式且大小相同的图片进行信息图片的隐藏和提取,对于不同格式大小相同或者格式相同大小不同的图片不能进行隐藏和提取。3.实验效果和分析 LSB算法的抗攻击能力 本实验算法比较简单,抗攻击能力弱。随机选择嵌入位(安全性因素的考虑)本实验
16、算法不能随机选择隐藏信息图片的嵌入位,在本程序中设置的为程序默认值,不能提供安全性,可设计随机生成 0-7 的随机数对信息图形的不同位置随机进行嵌入。再增加隐藏和提取的用户口令则会使安全性更好。嵌入位均匀分布于载体 每次对图像的一个字节的同一个位嵌入,都是同一个位置,这导致分布不均匀。若实现随机嵌入图像的不同字节时不同嵌入位可提高嵌入位的均匀分布于载体。信息提取的检错/纠错 本实验提取出来的图片和原本要隐藏的信息图片不一样。4.总结:本实验比较简单,在理解了图形信息隐藏的实质和代码的意义后就能很快理解和掌握。不足的是不能将带算法优化已解决遇到的各种问题。将会在以后的学习当中注意知识的积累和灵活
17、运行。附件:源代码:function varargout=LSB3333(varargin)%LSB3333 MATLAB code for%LSB3333,by itself,creates a new LSB3333 or raises the existing%singleton*.%H=LSB3333 returns the handle to a new LSB3333 or the handle to%the existing singleton*.%LSB3333(CALLBACK,hObject,eventData,handles,.)calls the local%funct
18、ion named CALLBACK in with the given input arguments.%LSB3333(Property,Value,.)creates a new LSB3333 or raises the%existing 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 propert
19、y application%stop.All inputs are passed to LSB3333_OpeningFcn via varargin.%*See GUI Options on GUIDEs Tools 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 14-Apr-2015 10
20、:08:25%Begin initialization code-DO NOT EDIT gui_Singleton=1;gui_State=struct(gui_Name,mfilename,.gui_Singleton,gui_Singleton,.gui_OpeningFcn,LSB3333_OpeningFcn,.gui_OutputFcn,LSB3333_OutputFcn,.gui_LayoutFcn,.gui_Callback,);if nargin&ischar(varargin1)=str2func(varargin1);end if nargout varargout1:n
21、argout=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 output args,see OutputFcn.%hObject handle to figure
22、%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 LSB3333 =hObject;%Update handles structure guidata(hObject,handles);%UIWAIT makes
23、LSB3333 wait for user response(see UIRESUME)%uiwait;%-Outputs from this function are returned to the command line.function varargout=LSB3333_OutputFcn(hObject,eventdata,handles)%varargout cell array for returning output args(see VARARGOUT);%hObject handle to figure%eventdata reserved-to be defined i
24、n a future version of MATLAB%handles structure with handles and user data(see GUIDATA)%Get default command line output from handles structure varargout1=;%-Executes on button press in pbtCover.function pbtCover_Callback(hObject,eventdata,handles)%hObject handle to pbtCover(see GCBO)%eventdata reserv
25、ed-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!,Warning,warn,modal);return;end axes;imshow(gCover);iH iW iL=size(gCover);sMsg=sFile,num2str(iH),*,num2str(iW),*,
26、num2str(iL),;set,String,sMsg);%-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;gS
27、ecret,sFile=loadimg();if isempty(gSecret)msgbox(Secret image is empty!,Warning,warn,modal);return;end axes;imshow(gSecret);iH iW iL=size(gSecret);sMsg=sFile,num2str(iH),*,num2str(iW),*,num2str(iL),;set,String,sMsg);set,String,Secret Image);%-Executes on button press in pbtEmbed.function pbtEmbed_Cal
28、lback(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)global gCover gSecret gStego;if isempty(gCover)msgbox(Cover image is empty!,Warning,warn,modal);return;end if
29、isempty(gSecret)msgbox(gSecret image is empty!,Warning,warn,modal);return;end Hc,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,);axes;imshow(gStego,);%-Executes on button
30、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(Cove
31、r image is empty!,Warning,warn,modal);return;end if isempty(gSecret)msgbox(gSecret image is empty!,Warning,warn,modal);return;end Hc,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
32、(gStego,);axes;imshow(gStego,);if isempty(gStego)msgbox(Stego image is empty!,Warning,warn,modal);return;end imExtract=uint8(bitand(255,bitshift(gStego,7);imwrite(imExtract,);axes;imshow(imExtract);msgbox(Extracted Image:,Finished);%-Executes on button press in pbtExit.function pbtExit_Callback(hObject,eventdata,handles)%hObject handle to pbtExit(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;end delete*.*%delete;delete(LSB3333);