上海电力学院高级程序设计(C)课程设计报告LSB信息隐藏实验题目:院系:计算机科学与技术学院专业年级:信息安全2012级学生姓名:涂桂花学号:20123333指导教师:魏为民2015年4月14日目录一、实验目的 (1)二、实验内容和步骤 (1)1. 操作环境 (1)2. 系统配置 (1)3. 操作步骤 (1)4. 程序源代码 (5)三、实验结果 (5)1. 测试图片 (5)2. 测试结果 (5)3.截屏 (6)四.实验小结 (6)1. 遇到的问题总结合分析: (6)2. 未解决的问题 (10)3. 实验效果和分析 (10)4. 总结: (10)附件: (11)上 海 电 力 学 院实 验 报 告课程名称实验项目姓名 学号 班级 专业同组人姓名 指导教师 魏为民 实验日期一、实验目的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 ”窗口里输入“guide ”,回车。
a. 如下图所示建立图形界面。
将5个push button 控件的“String ”属性设置为下图相应信息安全 LSB 信息隐藏实验 涂桂花 20123333 2012252 信息安全 无 2015.4.14显示的名字,Tag属性设置为pbt+String名的格式。
将4个axec控件的Tag属性设置为如下图所显示的名字。
3)分别右键点击5个push button控件,View Callbacks->CallBacks.给每个控件添加Callback代码。
再添加代码之前要为该fig文件命名。
我在本次实验命名为LSB3333.fig。
各个控件的代码如下:% --- Executes 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(gCover)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);% --- 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();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,'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 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' , '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;endgStego = uint8(bitor(bitand(gCover,254),bitshift(gSecret,-7))); imwrite(gStego, '~emTmp.bmp' );axes(handles.axStego);imshow(gStego,[]);% --- Executes 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(gCover)msgbox('Cover image is empty!' , 'Warning' , 'warn' , 'modal' ); return;endif 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;endgStego = 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 = uint8(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 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;enddelete ~*.*%delete (handles.figLSB);delete (LSB3333);4)将测试图片或者图片文件夹放在LSB文件夹下。