LSB圖像信息隱藏實(shí)驗(yàn)1_第1頁
LSB圖像信息隱藏實(shí)驗(yàn)1_第2頁
LSB圖像信息隱藏實(shí)驗(yàn)1_第3頁
LSB圖像信息隱藏實(shí)驗(yàn)1_第4頁
LSB圖像信息隱藏實(shí)驗(yàn)1_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第頁學(xué)號:姓名:專業(yè)年級班級:實(shí)驗(yàn)室:組別:實(shí)驗(yàn)日期:課程名稱保密技術(shù)實(shí)驗(yàn)實(shí)驗(yàn)課時(shí)實(shí)驗(yàn)工程名稱和序號圖像信息隱藏實(shí)驗(yàn)同組者姓名實(shí)驗(yàn)?zāi)康?.掌握對圖像的根本操作。2.能夠用LSB算法對圖像進(jìn)展信息隱藏3.能夠用LSB提取算法提取隱藏進(jìn)圖像的信息4.能夠反映jpeg壓縮率與誤碼率之間的關(guān)系實(shí)驗(yàn)環(huán)境Windows+matlab實(shí)驗(yàn)內(nèi)容和原理1.用MATLAB函數(shù)實(shí)現(xiàn)LSB信息隱藏和提取2.分析了LSB算法的抗攻擊能力3.能隨機(jī)選擇嵌入位〔考慮平安性因素〕實(shí)驗(yàn)步驟方法關(guān)鍵代碼實(shí)驗(yàn)算法1:LSB嵌入讀取一副256*256大小的圖片,判斷是否為RGB圖像。假設(shè)為RGB圖像,那么讀取圖像的一層信息〔如R層〕。通過讀取圖像的尺寸大小來判斷是否為RGB圖像。RGB圖像是三維多彩圖,size有3個(gè)參數(shù),最小參數(shù)是3,只要判斷讀取到的圖像大小大于2,就確定讀入的是RBG圖像以二進(jìn)制形式讀取要嵌入到圖片里的消息。并讀取消息的長度〔嵌入消息的長度不能超過圖像位數(shù)〕。產(chǎn)生與消息長度一致的一串隨機(jī)數(shù)〔不能一樣〕。自定義一個(gè)randinterval函數(shù)來實(shí)現(xiàn)偽隨機(jī)數(shù)的生成

產(chǎn)生的偽隨機(jī)數(shù)是代表消息要隱藏的像素位置〔行和列的信息〕隨機(jī)數(shù)代碼:function[row,col]=randinterval(matrix,count,key)%參數(shù)說明%matrix是載體矩陣,即要隱藏信息的圖層%cout為要嵌入信息的像素?cái)?shù)量%key為自定義秘鑰,隨機(jī)種子[m,n]=size(matrix);interval1=floor(m*n/(count+eps))+1;interval2=interval1-2;ifinterval2==0error('載體太小不能把秘密信息隱藏進(jìn)去');endrand('seed',key);a=rand(1,count);row=zeros([1count]);col=zeros([1count]);r=1;c=1;row(1,1)=r;col(1,1)=c;fori=2:countifc=c+interval1;elsec=c+interval2;endifc>nr=r+1;ifr>merror('載體太小不能把秘密信息隱藏進(jìn)去');endc=mod(c,n);ifc==0c=1;endendrow(1,i)=r;col(1,i)=c;end按照產(chǎn)生的隨機(jī)數(shù)的序列依次將圖片層的最后一位改為消息的信息。即用消息替換圖片的最后一位信息。嵌入完成后,如果為RGB那么將該層返回原圖像。然后將數(shù)據(jù)信息寫回圖像。LSB就完成了。image=imread('1.jpg');Hide_image=image;Hide_image=double(Hide_image);mysize=size(image);ifnumel(mysize)>2['thephotoisargbstylephoto']%是rgb圖像輸出到命令行窗口image1=Hide_image(:,:,1);%第三個(gè)參數(shù)1代表的讀取的是紅層,但是沒有將2,3層設(shè)為0,因?yàn)闀B加,所以顯示出來的第一層圖像還是灰色的message=fopen('Message.txt','r');[msg,msg_len]=fread(message,'ubit1')%按位以二進(jìn)制形式讀取文本內(nèi)容與長度[m,n]=size(image1)%讀取行和列p=1;%p為秘密信息的位計(jì)數(shù)器[row,col]=randinterval(image1,msg_len,1996);fori=1:msg_lenimage1(row(i),col(i))=image1(row(i),col(i))-mod(image1(row(i),col(i)),2)+msg(p,1);ifp==msg_lenbreak;end;p=p+1;end%復(fù)原圖像Hide_image(:,:,1)=image1;Hide_image=uint8(Hide_image);imwrite(Hide_image,'Hide_image.tif');%輸出隱藏信息的圖像subplot(121);imshow(image);title('未嵌入信息的圖片');subplot(122);imshow(Hide_image);title('嵌入信息的圖片');else['thephotoisnotargbstyle']fclose('all');end實(shí)驗(yàn)算法2:讀取LSB隱藏的信息1.讀取已經(jīng)隱藏信息的圖像。如果為RGB圖像,那么讀取圖像的一層〔該層為嵌入信息的那層〕。2.用與LSB算法中一樣的隨機(jī)數(shù)種子產(chǎn)生一樣的一串隨機(jī)數(shù)。隨機(jī)數(shù)串的長度由LSB中獲得〔長度不得大于圖像大小〕。用同一個(gè)偽隨機(jī)生成算法,一樣的種子,來產(chǎn)生像素點(diǎn)位置,可以確保隱藏時(shí)和提取時(shí)位置順序是一模一樣的,在順序讀取這些位置上的數(shù)據(jù)〔利用與運(yùn)算,與上1,任何數(shù)與上1還是本身的性質(zhì)〕,就是隱藏的信息。3.按照產(chǎn)生的隨機(jī)數(shù)序列依次讀取圖像的相應(yīng)點(diǎn)最后一位的信息。并將其以二進(jìn)制形式寫到文件中。Ubit1就代表每次讀取1位,寫入文件,每8位識別一個(gè)ASCII碼值。所以可以成功寫入26個(gè)字母和數(shù)字。其他字符由于文本文檔識別不了,所以寫入文本之后都變成了亂碼。4.看文件,即獲取的信息,與嵌入的信息進(jìn)展比擬。Message.txt是原始信息文檔,txt是提取出來的信息文檔,可以發(fā)現(xiàn)二者信息內(nèi)容是一模一樣的,說明隱藏信息提取是成功的。%功能:用來提取隱藏信息Picture=imread(‘Hide_image.tif’);Picture=double(Picture);[m,n]=size(Picture);ifmsg_len>m*nerror('嵌入信息量過大,請重新選擇圖像')endfrr=fopen(‘3.txt’,’w’);%以寫入方式翻開只寫文件msg_len=8;%這里要改成實(shí)驗(yàn)一中自己圖片的數(shù)據(jù)p=1;[row,col]=randinterval(Picture,msg_len,1996);fori=1:msg_lenifbitand(Picture_R(row(i),col(i)),1)==1%按位與運(yùn)算fwrite(frr,1,’ubit1’);result(p,1)=1;elsefwrite(frr,0,’ubit1’);result(p,1)=0;endifp==msg_lenbreak;endp=p+1;endfclose(frr);%fwrite函數(shù)的作用是將內(nèi)存中的二進(jìn)制數(shù)據(jù)原樣寫入文件中%是ubit后面的數(shù)字表示是一次讀幾位,中間的數(shù)據(jù)表示讀幾次。讀取已經(jīng)隱藏信息的圖像。fp=imread(‘Hide_image.tif’);2.使用imwrite函數(shù)對圖像進(jìn)展壓縮,設(shè)定壓縮比例。imwrite(fp,’out.jpg’,’quality’,compressibility)Compressiblity是圖像的質(zhì)量因子,可設(shè)置在0-100范圍內(nèi);3.如果為RGB圖像,那么讀取嵌有信息的一層。按照讀取LSB隱藏信息算法的步驟,讀取信息,不寫入文件。4.讀取原文件,即隱藏的信息,以二進(jìn)制讀取。并取得消息長度。message=fopen(‘message.txt’,’r’);

[msg,msg_len]=fread(message,’ubit1’)

%按位以二進(jìn)制形式讀取文本內(nèi)容與長度5比擬取得的信息和原信息的每一位,記錄不相等位數(shù)的個(gè)數(shù)。bit_error=find(result~=msg);%尋找不相等的位置

bit_error_count=size(bit_error,1);%統(tǒng)計(jì)不相等的個(gè)數(shù)用不相等個(gè)數(shù)除以總長度即可得到誤碼率。ber(compressibility/10)=bit_error_count/msg_len;改變壓縮率。得到一組誤碼率關(guān)于壓縮率的函數(shù)。在開場時(shí),設(shè)置9次循環(huán),壓縮圖片的質(zhì)量因子compressibility從10開場增加,每次遞增10,直到compressibility=100,記錄下每次的誤碼率,用plot函數(shù)做出關(guān)于以質(zhì)量因子為橫坐標(biāo),誤碼率為縱坐標(biāo)的圖表。forcompressibility=10:10:100%九次不同壓縮率的圖片壓縮fp=imread(‘Hide_image.tif’);imwrite(fp,’out.jpg’,’quality’,compressibility)%plot參數(shù)說明:%參數(shù)1是橫坐標(biāo)自變量,參數(shù)2是縱坐標(biāo)自變量,參數(shù)3是指用說明形式描點(diǎn),參數(shù)4和5代表把散點(diǎn)鏈接起來compressibility=10:10:100;plot(compressibility,ber,’*’,compressibility,ber);title(‘基于圖片壓縮質(zhì)量因子的誤碼率圖表’);代碼:closeall;clcforcompressibility=10:10:100fp=imread('Hide_image.tif');imwrite(fp,'out.jpg','quality',compressibility);out=imread('out.jpg');out=double(out);ifsize(fp)>2outr=out(:,:,1)[m,n]=size(outr)msg_len=8p=1;%將消息序列寫回文本文件[row,col]=randinterval(outr,msg_len,1996);fori=1:msg_lenifbitand(outr(row(i),col(i)),1)==1result(p,1)=1;elseresult(p,1)=0;endifp==msg_lenbreak;endp=p+1;endmessage=fopen('Message.txt','w');[msg,msg_len]=fread(message,'ubit1');bit_error=find(result~=msg_len)bit_error_count=size(bit_error,1);ber(compressibility/10)=bit_error_count/(msg_len+eps);endendcompressibility=10:10:100;plot(compressibility,ber,'*',compressibility,ber);title('基于圖片壓縮質(zhì)量因子的誤碼率圖表

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論