版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、上海電力學(xué)院高級程序設(shè)計(C)課程設(shè)計報告LSB信息隱藏實驗題目: 院系:計算機科學(xué)與技術(shù)學(xué)院 專業(yè)年級: 信息安全2012級 學(xué)生姓名:涂桂花 學(xué)號:20123333 指導(dǎo)教師:魏為民 2015年4月14日 目錄一、實驗?zāi)康?二、實驗內(nèi)容和步驟11. 操作環(huán)境12. 系統(tǒng)配置13. 操作步驟1 4. 程序源代碼5三、實驗結(jié)果51. 測試圖片52. 測試結(jié)果53.截屏6四 實驗小結(jié)61. 遇到的問題總結(jié)合分析:62. 未解決的問題103. 實驗效果和分析104. 總結(jié):10附件:11上 海 電 力 學(xué) 院實 驗 報 告 LSB信息隱藏實驗信息安全課程名稱 實驗項目 信息安全2012252201
2、23333涂桂花姓名 學(xué)號 班級 專業(yè) 2015.4.14無同組人姓名 指導(dǎo)教師 魏為民 實驗日期 一、實驗?zāi)康?.用MATLAB函數(shù)實現(xiàn)LSB信息隱藏和提取。2.了解信息隱藏的作用和實現(xiàn)方法原理。3.學(xué)會分析了解隱藏算法。二、實驗內(nèi)容和步驟如操作環(huán)境、系統(tǒng)配置、操作步驟、程序源代碼等。1. 操作環(huán)境操作系統(tǒng) Windows 7 旗艦版 64位 SP1 ( DirectX 11 )2. 系統(tǒng)配置處理器AMD E1-2100 APU with Radeon HD Graphics 雙核3. 操作步驟1) 打開MATLAB軟件,新建文件夾名為“ LSB ”。2) 在“Command Window”
3、窗口里輸入“guide”,回車。a. 如下圖所示建立圖形界面。將5個push button控件的“String”屬性設(shè)置為下圖相應(yīng)顯示的名字,Tag屬性設(shè)置為pbt+String名的格式。將4個axec控件的Tag屬性設(shè)置為如下圖所顯示的名字。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. 程序源代碼見附件。三、實驗結(jié)果1. 測試圖片1 隱藏載體圖:Leno圖片信息2 隱藏秘密圖:Boy圖片信息2. 測試結(jié)果1 隱藏后的圖片信息:2 從隱藏后的圖中提取出來的秘密圖片信息:3.截屏4 實驗小結(jié)1. 遇到的問題總結(jié)合分析:(1)問題:點擊退出按鍵后選擇退出Yes,不能完全退出。解決方法:查看源代碼,經(jīng)過分析,代碼沒有錯,但是沒有實現(xiàn)退出該fig圖形窗體而是僅僅退出了詢問是否退出的box的小窗口。經(jīng)過改正源代碼后,可實現(xiàn)完全退出。更改后的代碼如下【即將原
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)問題:老師提供的代碼會出現(xiàn)如下圖片的一些問題。1 沒有選擇Secret Message圖片也能進行信息圖片的隱藏和提取2 沒有添加
18、Cover圖片也能進行信息的隱藏和提取3 沒有添加Cover和Secret圖片,不能進行信息隱藏,卻能進行信息提取解決方法:分析老師提供的源代碼后,進行改進可解決上述出現(xiàn)的問題,即在沒有選擇Cover圖片或者Secret圖片的時候,都不能進行信息隱藏和提取。結(jié)果截圖如下:2. 未解決的問題1 問題描述:沒有點擊Cover控件和Secret控件選擇Cover或者Secret圖片或者不選擇,也能進行隱藏和提取。分析:沒有設(shè)計代碼判斷axec控件是否有圖片內(nèi)容。2 問題描述:對于不同格式或者不同大小或者灰白和彩色不同的圖片不能進行信息圖片的隱藏和提取。分析:本實驗代碼只能對同種格式且大小相同的圖片進
19、行信息圖片的隱藏和提取,對于不同格式大小相同或者格式相同大小不同的圖片不能進行隱藏和提取。3. 實驗效果和分析1 LSB算法的抗攻擊能力本實驗算法比較簡單,抗攻擊能力弱。2 隨機選擇嵌入位(安全性因素的考慮)本實驗算法不能隨機選擇隱藏信息圖片的嵌入位,在本程序中設(shè)置的為程序默認值,不能提供安全性,可設(shè)計隨機生成0-7的隨機數(shù)對信息圖形的不同位置隨機進行嵌入。再增加隱藏和提取的用戶口令則會使安全性更好。3 嵌入位均勻分布于載體每次對圖像的一個字節(jié)的同一個位嵌入,都是同一個位置,這導(dǎo)致分布不均勻。若實現(xiàn)隨機嵌入圖像的不同字節(jié)時不同嵌入位可提高嵌入位的均勻分布于載體。4 信息提取的檢錯/糾錯本實驗提
20、取出來的圖片和原本要隱藏的信息圖片不一樣。4. 總結(jié):本實驗比較簡單,在理解了圖形信息隱藏的實質(zhì)和代碼的意義后就能很快理解和掌握。不足的是不能將帶算法優(yōu)化已解決遇到的各種問題。將會在以后的學(xué)習(xí)當(dāng)中注意知識的積累和靈活運行。附件:源代碼: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025護理學(xué)院學(xué)生工作計劃樣文
- 幼兒中班教師工作計劃范文模板
- 吳建旭“互聯(lián)網(wǎng)+”大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽項目計劃書
- 2025白酒銷售月工作計劃范文
- 切實加強行風(fēng)建設(shè)努力做好計劃生育工作的講話
- 城管科科長述職報告總結(jié)計劃
- 2025關(guān)于小學(xué)班主任工作計劃
- 《機械制圖與CAD含習(xí)題集》課件-第5章3
- 合伙種植沃柑合同模板
- 鐵路客運合同案例簡短
- 《汽車傳感器》課件
- 中醫(yī)內(nèi)科學(xué)課件-癲狂
- 分享會之蹲馬步管理工坊
- 水土保持監(jiān)理實施細則
- 第9課小測-2023-2024學(xué)年初中日語人教版第三冊(含答案)
- 2023年諸暨市重點高中提前招生選拔考試科學(xué)試卷
- 學(xué)術(shù)規(guī)范與學(xué)術(shù)倫理學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 部編版三年級上冊道德與法治期末測試卷(全優(yōu))
- 2022年北京語言大學(xué)教師招聘考試真題
- 不良資產(chǎn)清收處置手段及流程
評論
0/150
提交評論