BMP 图像信息隐藏及检测

实验原理

针对文件结构的信息隐藏方法需详细掌握文件的格式,利用文件结构块之间 的关系或根据块数据和块大小之间的关系来隐藏信息。

BMP(Bitmap-File)图形文件是Windows采用的常见图形文件格式,要利用BMP位图进行信息隐藏首先需要详细了解BMP文件的格式,BMP图像文件结构比较单一而且固定,BMP图像由文件头、信息头、调色板区和数据区四个部分组成,而24位真彩色图像中没有调色板信息。24位真彩色BMP位图文件包括 3 部分。 第一部分是BMP文件头。前2个字节是“BM”,是用于识别BMP文件的标志;第3-6字节存放的是位图文件的大小,以字节为单位;第7-10字节是保留的,必须为0;第11-14字节给出位图阵列相对于文件头的偏移,在24位真彩色图像中,这个值固定为54;19-22表示的是图像文件的宽度,以像素为单位;23-26表示的是图像文件 的高度,以像素为单位。第二部分是位图信息头。从第29个字节开始,第29~30字节描述的是像素的位数,24位真彩色位图。该位的值为0x18;第三部分是数据区。从第55个字节开始,每3个字节表示一个像素,这3个字节依次表示该像素的红、绿、蓝亮度分量值。

在不影响图像正常显示情况下,可使用以下四种方法在24位真彩色BMP图像中隐藏信息:
(1)在图像文件尾部添加任意长度的数据,秘密信息存放在文件尾部可以减少修改文件头的数据量,仅需修改文件头中文件长度的值即可。
(2)在调色板或者位图信息头和实际的图像数据之间隐藏数据,如果将秘密数据放在文件头与图像数据之间,则至少需要修改文件头中文件长度、数据起始偏移地址这两个域的值。 
(3)修改文件头和信息头中的保留字段隐藏信息。
(4)在图像像素区利用图像宽度字节必须是4的倍数的特点,在补足位处隐藏数据。

实验记录

(1)在实际的图像数据后隐藏信息
待隐藏的秘密信息文件名称为hidden.txt、baboon.bmp为载体图像,将载体和秘密信息放置在同一目录 下,在 windows 的命令行模式下执行命令:

Copy baboon.bmp /b+hidden.txt /a baboonl.bmp

在这里插入图片描述
其中参数/b指定以二进制格式复制、合并文件,参数/a以ASCII格式复制、合并文件。将baboon.bmp 和 hidden.txt文件进行合并,并生成新的文件baboon1.bm,浏览原图像和合成后的图像,几乎完全相同
在这里插入图片描述在这里插入图片描述将两张图片分别放入UltraEdit中,查看图片信息如下:
在这里插入图片描述在这里插入图片描述
如图所示,看到合并后的图片中隐藏了hidden.txt中的内容
隐写代码:

clc; 
clear; 
fid=fopen('baboon.bmp ','r'); 
%读入载体图像文件 
[a,length]=fread(fid,inf,'uint8');
%length 是文件的实际长度 
fclose(fid); 
fid=fopen('baboon.bmp','r');  
status=fseek(fid,2,'bof'); 
fileb=fread(fid,4,'uint8'); 
filelength=fileb(1)*1+fileb(2)*256+fileb(3)*256^2+fileb(4)*256^3
%文件图像中保存的文件长度 
diff=length-filelength; 
%diff 表示隐藏的信息长度如果相同,表示图像没有隐藏任何信息。 
fclose(fid);

将红字部分分别写为baboon.bmp和baboonl.bmp,观察工作区如图所示
在这里插入图片描述在这里插入图片描述
上图为baboon.bmp,下图为baboonl.bmp
由此,可观察到合并后的工作区中diff值为6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值