




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 基于LSB的信息隐藏算法一、 实验目的该实验为验证性实验。目的是通过实验使学生掌握经典信息隐藏算法,在Matlab环境下,编写基于图像的LSB信息隐藏算法程序。用Matlab函数实现LSB信息隐藏及提取,并进行分析。二、 实验要求1、实验前要做好充分准备,包括:复习实验所涉及的知识点,掌握Matlab编程语言和调试环境。2、实验时注意记录实验过程中产生的数据、出现的问题及解决问题的方法。3、理论联系实际,认真分析实验结果,回答思考题。4、实验后完成实验报告,并附相关截图。三、 实验环境计算机(安装Visual C+ 6.0和Matlab 6.5以上版本)四、 实验原理隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。嵌入过程包括选择一个图像载体像素点的子集j1,jl(m),然后在子集上执行替换操作像素cjimi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或0)。一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位)排列起来重构秘密信息,算法描述如下:嵌入过程:for(i=1;i=像素序列个数;i+) sicifor(i=1;i=秘密消息长度;i+) /将选取的像素点的最不重要位依次替换成秘密信息 sjicjimi提取过程:for(i=1;im*n error(嵌入消息量过大,请更换图像);end%p作为消息嵌入位数计数p=1;%调用随机间隔函数选取像素点row,col=randinterval(ste_cover,len_total,2001);%在LSB隐秘消息for i=1:len_totalste_cover(row(i),col(i)=ste_cover(row(i),col(i)-mod(ste_cover(row(i),col(i),2)+msg(p,1); if p=len_total break; end p=p+1;endste_cover=uint8(ste_cover);imwrite(ste_cover,lena2.bmp);%显示实验结果subplot(1,2,1);imshow(cover);title(原始图像);subplot(1,2,2);imshow(lena2.bmp);title(隐藏信息的图像);(2)编写函数比较两幅图像区别%文件名:compare.m%函数功能:本函数完成显示隐秘前后两幅图像的区别%输入格式举例:F=compare(blenna.bmp,scover.bmp)%参数说明:%original是原始载体图像%hided是隐秘后的图像%F是差值矩阵function F=compare(original,hided)%读取原始载体图像矩阵W=imread(lena.bmp);W=double(W)/255;%读取隐秘后图像矩阵E=imread(lena2.bmp);E=double(E)/255;%将两图像矩阵相减,显示效果F=E-W;%注意,MATLAB中矩阵相减只支持double型imshow(mat2gray(F)(3)隐秘消息的提取%文件名:randlsbget.m%函数功能:本函数将完成提取隐秘于LSB上的秘密消息%输入格式举例:result=randlsbget(scover.jpg,56,secret.txt,2001)%参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%key是随机间隔函数的密钥%result是提取的消息function result=randlsbget(output,len_total,goalfile,key)ste_cover=imread(lena2.bmp);ste_cover=double(ste_cover);%判断嵌入消息量是否过大m,n=size(ste_cover);frr=fopen(2.txt,a);%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1;%调用随机间隔函数选取像素点row,col=randinterval(ste_cover,128,2001);for i=1:128 if bitand(ste_cover(row(i),col(i),1)=1 fwrite(frr,1,bit1); result(p,1)=1; else fwrite(frr,0,bit1); result(p,1)=0; end if p=128 break; end p=p+1;endfclose(frr);2、 顺序选取图像载体像素,实现隐秘消息的嵌入与提取 (1)隐秘消息的嵌入%文件名:lsbhide.m%函数功能:本函数将完成在LSB上的顺序信息隐秘,载体选用灰度BMP图%输入格式举例:ste_cover,len_total=lsbhide(glenna.bmp,message.txt,scover.bmp)%参数说明:%input是信息隐蔽载体图像,为灰度BMP图%file是秘密消息文件%output是信息隐秘后生成图像%ste_cover是信息隐秘后图像矩阵%len_total是秘密消息的长度,即容量functionste_cover,len_total=lsbhide(input,file,output,key)%读入图像矩阵cover=imread(lena.bmp);ste_cover=cover;ste_cover=double(ste_cover);%将文本文件转换为二进制序列f_id=fopen(1.txt,r);msg,len_total=fread(f_id,ubit1);%判断嵌入消息量是否过大m,n=size(ste_cover);if len_totalm*n error(嵌入消息量过大,请更换图像);end%p作为消息嵌入位数计数p=1;%调用随机间隔函数选取像素点%row,col=interval(ste_cover,len_total,2001);%在LSB隐秘消息for f1=1:mfor f2=1:nste_cover(f1,f2)=ste_cover(f1,f2)-mod(ste_cover(f1,f2),2)+msg(p,1); if p=len_total break; end p=p+1;endif p=len_total break; end p=p+1;endste_cover=uint8(ste_cover);imwrite(ste_cover,lena2.bmp);%显示实验结果subplot(1,2,1);imshow(cover);title(原始图像);subplot(1,2,2);imshow(lena2.bmp);title(隐藏信息的图像);(2)调用函数compare.m比较两幅图像区别%文件名:compare.m%函数功能:本函数完成显示隐秘前后两幅图像的区别%输入格式举例:F=compare(blenna.bmp,scover.bmp)%参数说明:%original是原始载体图像%hided是隐秘后的图像%F是差值矩阵function F=compare(original,hided)%读取原始载体图像矩阵W=imread(lena.bmp);W=double(W)/255;%读取隐秘后图像矩阵E=imread(lena2.bmp);E=double(E)/255;%将两图像矩阵相减,显示效果F=E-W;%注意,MATLAB中矩阵相减只支持double型imshow(mat2gray(F)(3)隐秘消息的提取%文件名:lsbget.m%函数功能:本函数将完成提取隐秘于LSB上的秘密消息%输入格式举例:result=lsbget(scover.bmp,56,secret.txt)%参数说明:%output是信息隐秘后的图像%len_total是秘密消息的长度%goalfile是提取出的秘密消息文件%result是提取的消息function result=lsbget(output,len_total,goalfile,key)ste_cover=imread(lena2.bmp);ste_cover=double(ste_cover);%判断嵌入消息量是否过大m,n=size(ste_cover);frr=fopen(2.txt,a);%p作为消息嵌入位数计数器,将消息序列写回文本文件p=1;%调用随机间隔函数选取像素点row,col=interval(ste_cover,128,2001);for f1=1:128for f2=1:128if bitand(ste_cover(f1,f2),1)=1 fwrite(frr,1,bit1); result(p,1)=1; else fwrite(frr,0,bit1); result(p,1)=0; end if p=128 break; end p=p+1;endif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论