信息隐藏实验二BMP图像信息隐藏_第1页
信息隐藏实验二BMP图像信息隐藏_第2页
信息隐藏实验二BMP图像信息隐藏_第3页
信息隐藏实验二BMP图像信息隐藏_第4页
信息隐藏实验二BMP图像信息隐藏_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二 BMP 图像信息隐藏一, 实验目的1, 了解BMP图像文件格式2, 了解利用BMP图像文件隐藏信息的原理3, 设计并实现一种基于24位真彩色BMP图像的文件信息隐藏方法。二,实验环境 1, Windows XP 操作系统 2, Ultra Edit 文本编辑工具 3, Matlab 7.1版本软件4, BMP格式图片文件三,实验原理1, 在图像文件尾部添加任意长度的数据,秘密信息存放在文件尾部可以减少修改文件头的数据量,仅需修改文件头中的文件长度的值即可。2, 在调色板或者位图信息头和实际的图像数据之间隐藏数据,如果将秘密数据放在文件头与图像数据之间,则至少需要修改文件头中文件长度、数

2、据起始偏移地址这两个域的值。3, 修改文件头和信息头中保留字段隐藏信息。4, 在图像像素区利用图像宽度字节必须是4的倍数额特点,在补足位处隐藏数据。四,实验过程1, 在实际的图像数据后隐藏信息(1)将载体baboon.bmp和秘密信息hidden.txt放置在同一目录下,在Windows的MS-DOS方式下执行命令copy baboon.bmp /b + hidden.txt /a baboon1.bmp,如下图所示:图一 DOS界面(2)生成的新图像baboon1.bmp,表面上看上去与原图像几乎完全一样 图二 隐藏前后对比图(3)在Ultra Edit看两幅图像的结构,发现有所差别。图三

3、baboon.bmp图四 baboon1.bmp(4)在Matlab中通过比较文件的实际长度和文件中保存的文件长度,就可以发现该图像是否隐藏秘密信息。代码如下所示:clc;clear;fid=fopen('baboon1.bmp','r');%读入伪装载体图像文件a,length=fread(fid,inf,'uint8');%length是文件的实际长度fclose(fid);fid=fopen('baboon1.bmp','r');%读入伪装载体图像文件status=fseek(fid,2,'bof&#

4、39;);fileb=fread(fid,4,'uint8');filelength=fileb(1)*1+fileb(2)*256+fileb(3)*256*256+fileb(4)*2563;%文件图像中保存的文件长度diff=length-filelength;%diff表示隐藏的信息长度如果相同,表示图像没有隐藏任何信息fclose(fid);从Workspace中可以读出diff数据为8图五 Workspace(5)在Ultra Edit中手动修改文件长度,再运行上述程序,发现diff=0,表示图像隐藏并修改文件长度后,通过该方法无法发现图像有隐藏信息。2, 文件头与

5、图像数据之间隐藏信息(1)在数据区开始之前隐藏信息,也就是在54个和55个字节之间隐藏信息。代码如下所示:clc;clear;wm=randsrc(1,300,0 1);%产生随机水印fid=fopen('baboon.bmp','r');%读入载体图像文件a,length=fread(fid,inf,'uint8');fclose(fid);msgfid=fopen('hidden.txt','r');%打开秘密文件msg,count=fread(msgfid);fclose(msgfid);wa=a; %a为图

6、像变为uint8类型后的一维矩阵j=1;wa(11)=54+count;%修改偏移量,其中count为7wa(3)=wa(3)+count;%修改图像数据的文件长度for i=55:61 %隐藏7位信息 wa(i)=uint8(msg(j,1);%隐藏密码信息 j=j+1;endfor i=55:length wa(i+7)=a(i);endfigure;wa=uint8(wa);fid=fopen('watermarked.bmp','wb');fwrite(fid,wa);fclose(fid);subplot(1,2,1);imshow('babo

7、on.bmp');%显示原始图像subplot(1,2,2);imshow('watermarked.bmp')%显示新图像(2)从图像看,两幅没有什么区别图六 隐藏前后对比图3, 在图像文件头和信息头的保留字段中隐藏信息BMP图像中第7,8,9,10字节是保留的,必须为0,所以可以在这四个字节中隐藏秘密信息。下面代码即隐藏了0,1,2,3这四个信息。clc;clear;wm=randsrc(1,300,0 1);%产生随机水印fid=fopen('baboon.bmp','r');%读入载体图像文件a,length=fread(fid,

8、inf,'uint8');fclose(fid);wa=a;%在BMP的7,8,9,10保留字中隐藏秘密信息0 1 2 3,ASCII值为)Ox30 Ox31 Ox32 Ox33wa(7)=48;wa(7)=49;wa(7)=50;wa(7)=51;figure;wa=uint8(wa);fid=fopen('watermarked.bmp','wb');fwrite(fid,wa);fclose(fid);subplot(1,2,1);imshow('baboon.bmp');%显示原始图像subplot(1,2,2);imshow('watermarked.bmp')

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论