- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息隐藏实验二BMP图像信息隐藏课件
实验二 BMP 图像信息隐藏
实验目的
了解BMP图像文件格式
了解利用BMP图像文件隐藏信息的原理
设计并实现一种基于24位真彩色BMP图像的文件信息隐藏方法。
二,实验环境
1, Windows XP 操作系统
2, Ultra Edit 文本编辑工具
3, Matlab 7.1版本软件
4, BMP格式图片文件
三,实验原理
在图像文件尾部添加任意长度的数据,秘密信息存放在文件尾部可以减少修改文件头的数据量,仅需修改文件头中的文件长度的值即可。
在调色板或者位图信息头和实际的图像数据之间隐藏数据,如果将秘密数据放在文件头与图像数据之间,则至少需要修改文件头中文件长度、数据起始偏移地址这两个域的值。
修改文件头和信息头中保留字段隐藏信息。
在图像像素区利用图像宽度字节必须是4的倍数额特点,在补足位处隐藏数据。
四,实验过程
在实际的图像数据后隐藏信息
(1)将载体baboon.bmp和秘密信息hidden.txt放置在同一目录下,在Windows的MS-DOS方式下执行命令copy baboon.bmp /b + hidden.txt /a baboon1.bmp,如下图所示:
图一 DOS界面
(2)生成的新图像baboon1.bmp,表面上看上去与原图像几乎完全一样
图二 隐藏前后对比图
(3)在Ultra Edit看两幅图像的结构,发现有所差别。
图三 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);
fileb=fread(fid,4,uint8);
filelength=fileb(1)*1+fileb(2)*256+fileb(3)*256*256+fileb(4)*256^3;
%文件图像中保存的文件长度
diff=length-filelength;
%diff表示隐藏的信息长度如果相同,表示图像没有隐藏任何信息
fclose(fid);
从Workspace中可以读出diff数据为8
图五 Workspace
(5)在Ultra Edit中手动修改文件长度,再运行上述程序,发现diff=0,表示图像隐藏并修改文件长度后,通过该方法无法发现图像有隐藏信息。
文件头与图像数据之间隐藏信息
(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为图像变为uint8类型后的一维矩阵
j=1;
wa(11)=54+count;%修改偏移量,其中count为7
wa(3)=wa(3)+count;%修改图像数据的文件长度
for i=55:61 %隐藏7位信息
wa(i)=uint8(msg(j,1));%隐藏密码信息
j=j+1;
end
for i=55:length
wa(i+7)=a(i);
end
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)%显示新图像
(2)从图像看,两幅没有什么区别
图六 隐藏前后对比图
在图像文件头和信息头的保留字段中隐藏信息
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,inf
文档评论(0)