资源描述
实验二 BMP图像信息隐藏一, 实验目的1, 理解BM图像文献格式2, 理解运用BP图像文献隐藏信息的原理3, 设计并实现一种基于24位真彩色BP图像的文献信息隐藏措施。二,实验环境1, Ww XP 操作系统 2, Ult dit 文本编辑工具3, atlab7.版本软件, BMP格式图片文献三,实验原理1, 在图像文献尾部添加任意长度的数据,秘密信息寄存在文献尾部可以减少修改文献头的数据量,仅需修改文献头中的文献长度的值即可。2, 在调色板或者位图信息头和实际的图像数据之间隐藏数据,如果将秘密数据放在文献头与图像数据之间,则至少需要修改文献头中文献长度、数据起始偏移地址这两个域的值。3, 修改文献头和信息头中保存字段隐藏信息。4, 在图像像素区运用图像宽度字节必须是4的倍数额特点,在补足位处隐藏数据。四,实验过程1, 在实际的图像数据后隐藏信息()将载体o.和秘密信息hd.txt放置在同一目录下,在Wndos的M-DOS方式下执行命令oy abn.bmp b ddentx abaoon1.bmp,如下图所示:图一O界面(2)生成的新图像bo1.mp,表面上看上去与原图像几乎完全同样 图二 隐藏前后对比图()在Ultr Edi看两幅图像的构造,发既有所差别。图三 baobmp图四babo1.bmp(4)在atlb中通过比较文献的实际长度和文献中保存的文献长度,就可以发现该图像与否隐藏秘密信息。代码如下所示:cl;ear;idopn(bbon1.bp,r);%读入伪装载体图像文献a,entad(id,nf,uint8);%ength是文献的实际长度clos(fid);fid=op(aon1m,r);%读入伪装载体图像文献statu=fsek(fid,,bof);file=fread(fid,4,in8);elngt=fleb()*1+fileb(2)*6+file(3)*5*+fileb()*2;%文献图像中保存的文献长度dif=lnth-flelenth;%if表达隐藏的信息长度如果相似,表达图像没有隐藏任何信息flse(f);从Wrkspce中可以读出dff数据为8图五 ospace()在Ultra Edit中手动修改文献长度,再运营上述程序,发现dif0,表达图像隐藏并修改文献长度后,通过该措施无法发现图像有隐藏信息。2, 文献头与图像数据之间隐藏信息(1)在数据区开始之前隐藏信息,也就是在54个和个字节之间隐藏信息。代码如下所示:lc;lear;wmransrc(1,300,0 1);产生随机水印d=o(aboon.bmp,r);读入载体图像文献a,legr(fid,nf,uint8);fcl(fd);msfidfpe(iddn.txt,r);打开秘密文献s,outread(mgfid);se(msi);a=a;a为图像变为un8类型后的一维矩阵j;w(11)=54+cunt;%修改偏移量,其中cout为7wa(3)a(3)+ont;修改图像数据的文献长度for i:61%隐藏7位信息 wa()=unt8(mg(j,);%隐藏密码信息 j=+1;foi=5:eg wa()a();endgre;w=u8(wa);f=opn(watrmaed.bm,w);fwrite(fd,wa);fclos(fi);supl(1,2,);sho(babon.bmp);显示原始图像ublt(,2,2);imhow(waterarked.p)显示新图像(2)从图像看,两幅没有什么区别图六 隐藏前后对比图3, 在图像文献头和信息头的保存字段中隐藏信息BMP图像中第7,0字节是保存的,必须为,因此可以在这四个字节中隐藏秘密信息。下面代码即隐藏了0,1,2,3这四个信息。clc;lr;w=rnc(1,300, 1);产生随机水印d=fopn(baoon.p,r);%读入载体图像文献a,lenth=fed(fid,inf,uint8);fcs(fd);wa=;%在BMP的,8,9,10保存字中隐藏秘密信息0 12 ,SI值为)O30O31 O32 O3a(7)=48;w(7)4;a()50;wa(7)=5;fure;wa=n8(w);fid=fopen(trmarked.bm,wb);fwrite(fid,w);clse(id);supot(1,2,1);mho(baon.bmp);%显示原始图像sot(1,2,);isho(aterrkd.bmp)%显示新图像图七 隐藏前后对比图五,实验总结通过该实验,我理解BP图像文献格式,理解运用BM图像文献隐藏信息的原理,并通过在实际的图像数据后隐藏信息,文献头与图像数据之间隐藏信息,以及在图像文献头和信息头的保存字段中隐藏信息这三种方式实现了信息隐藏。
展开阅读全文