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

下载本文档

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

文档简介

学号:姓名: 专业年级班级: 实验室: 组别: 实验日期 :课程名称保密技术实验实验课时实验项目名称和序号1.LSB图像信息隐藏实验同组者 姓 名实验目的1. 掌握对图像的基本操作。 2. 能够用 LSB 算法对图像进行信息隐藏 3. 能够用 LSB 提取算法提取隐藏进图像的信息 4. 能够反映 jpeg 压缩率与误码率之间的关系实验环境Windows+matlab实验内容和原理1用 MATLAB 函数实现 LSB 信息隐藏和提取 2分析了 LSB 算法的抗攻击能力 3能随机选择嵌入位(考虑安全性因素)实验步骤方 法关键代码实验算法 1:LSB 嵌入 1. 读取一副 256*256 大小的图片,判断是否为 RGB 图像。若为 RGB 图像,则 读取图像的一层信息(如 R 层)。通过读取图像的尺寸大小来判断是否为RGB图像。RGB图像是三维多彩图,size有3个参数,最小参数是3,只要判断读取到的图像大小大于2,就确定读入的是RBG图像2. 以二进制形式读取要嵌入到图片里的消息。并读取消息的长度(嵌入消息的 长度不能超过图像位数)。3. 产生与消息长度一致的一串随机数(不能相同)。自定义一个randinterval函数来实现伪随机数的生成产生的伪随机数是代表消息要隐藏的像素位置(行和列的信息)随机数代码:function row,col=randinterval(matrix,count,key)%randinterval.m%参数说明%matrix是载体矩阵,即要隐藏信息的图层%cout为要嵌入信息的像素数量%key为自定义秘钥,随机种子 m,n = size(matrix);interval1 = floor(m * n/(count+eps) + 1;interval2 = interval1 - 2;if interval2 = 0 error(载体太小不能把秘密信息隐藏进去);endrand(seed,key);a = rand(1, count);row = zeros(1 count);col = zeros(1 count);r = 1;c = 1;row(1,1) = r;col(1,1) = c;for i =2:count if a(i) = 0.5 c = c + interval1; else c = c + interval2; end if c n r = r + 1; if r m error(载体太小不能把秘密信息隐藏进去); end c = mod(c, n); if c = 0 c = 1; end end row(1, i) = r; col(1, i) = c;end4. 按照产生的随机数的序列依次将图片层的最后一位改为消息的信息。即用消 息替换图片 的最后一位信息。 5. 嵌入完成后,如果为 RGB 则将该层返回原图像。然后将数据信息写回图像。 LSB 就完成了。image=imread(1.jpg); Hide_image=image; Hide_image=double(Hide_image); mysize=size(image); if numel(mysize)2 the photo is a rgb style photo %是rgb图像输出到命令行窗口 image1=Hide_image(:,:,1); %第三个参数 1代表的读取的是红层,但是没有将2,3层设为0,因为会叠加,所以显示出来的第一层图像还是灰色的message=fopen(Message.txt,r); msg,msg_len=fread(message,ubit1) %按位以二进制形式读取文本内容与长度m,n=size(image1) %读取行和列p=1; %p为秘密信息的位计数器 row,col=randinterval(image1,msg_len,1996);for i=1:msg_len image1(row(i),col(i)=image1(row(i),col(i)-mod(image1(row(i),col(i),2)+msg(p,1); if p=msg_len break; end ; p=p+1; end %还原图像Hide_image(:,:,1)=image1; Hide_image=uint8(Hide_image); imwrite(Hide_image,Hide_image.tif); %输出隐藏信息的图像 subplot(121);imshow(image);title(未嵌入信息的图片); subplot(122);imshow(Hide_image);title(嵌入信息的图片); else the photo is not a rgb style fclose(all); end实验算法 2:读取 LSB 隐藏的信息1.读取已经隐藏信息的图像。如果为 RGB 图像,则读取图像的一层(该层为嵌入信息的那层)。2.用与 LSB 算法中相同的随机数种子产生相同的一串随机数。随机数串的长度由 LSB 中获得(长度不得大于图像大小)。用同一个伪随机生成算法,相同的种子,来产生像素点位置,可以确保隐藏时和提取时位置顺序是一模一样的,在顺序读取这些位置上的数据(利用与运算,与上1,任何数与上1还是本身的性质),就是隐藏的信息。 3.按照产生的随机数序列依次读取图像的相应点最后一位的信息。并将其以二进制形式写到文件中。Ubit1就代表每次读取1位,写入文件,每8位识别一个ASCII码值。所以可以成功写入26个字母和数字。其他字符由于文本文档识别不了,所以写入文本之后都变成了乱码。4.看文件,即获取的信息,与嵌入的信息进行比较。Message.txt是原始信息文档,txt是提取出来的信息文档,可以发现二者信息内容是一模一样的,说明隐藏信息提取是成功的。%功能:用来提取隐藏信息 Picture=imread(Hide_image.tif); Picture=double(Picture); m,n=size(Picture); if msg_lenm*n error(嵌入信息量过大,请重新选择图像)endfrr=fopen(3.txt,w); %以写入方式打开只写文件 msg_len=8; %这里要改成实验一中自己图片的数据p=1; row,col=randinterval(Picture,msg_len,1996); for i=1:msg_len if bitand(Picture_R(row(i),col(i),1)=1 %按位与运算 fwrite(frr,1,ubit1); result(p,1)=1; else fwrite(frr,0,ubit1); result(p,1)=0; end if p=msg_len break; end p=p+1; end fclose(frr); %fwrite函数的作用是将内存中的二进制数据原样写入文件中 %是ubit后面的数字表示是一次读几位,中间的数据表示读几次。1. 读取已经隐藏信息的图像。 fp=imread(Hide_image.tif);2. 使用 imwrite 函数对图像进行压缩,设定压缩比例。 imwrite(fp,out.jpg,quality,compressibility)Compressiblity是图像的质量因子,可设置在0-100范围内;3. 如果为 RGB 图像,则读取嵌有信息的一层。按照读取 LSB 隐藏信息算法的步骤,读取信息,不写入文件。 4. 读取原文件,即隐藏的信息,以二进制读取。并取得消息长度。 message=fopen(message.txt,r);msg,msg_len=fread(message,ubit1)%按位以二进制形式读取文本内容与长度5比较取得的信息和原信息的每一位,记录不相等位数的个数。bit_error=find(result=msg); %寻找不相等的位置bit_error_count=size(bit_error,1); %统计不相等的个数 6. 用不相等个数除以总长度即可得到误码率。 ber(compressibility/10)=bit_error_count/msg_len;7. 改变压缩率。得到一组误码率关于压缩率的函数。在开始时,设置9次循环,压缩图片的质量因子compressibility从10开始增加,每次递增10,直到compressibility=100,记录下每次的误码率,用plot函数做出关于以质量因子为横坐标,误码率为纵坐标的图表。 for compressibility=10:10:100 %九次不同压缩率的图片压缩 fp=imread(Hide_image.tif); imwrite(fp,out.jpg,quality,compressibility)% plot参数说明: % 参数1是横坐标自变量,参数2是纵坐标自变量,参数3是指用说明形式描点,参数4和5代表把散点链接起来 compressibility=10:10:100; plot(compressibility,ber,*,compressibility,ber); title(基于图片压缩质量因子的误码率图表); 代码:close all; clc for compressibility=10:10:100 fp=imread(Hide_image.tif);imwrite(fp,out.jpg,quality,compressibility); out=imread(out.jpg);out=double(out);if size(fp)2 outr=out(:,:,1) m,n=size(outr) msg_len=8p=1;%将消息序列写回文本文件 row,col=randinterval(outr,msg_len,1996);for i=1 :msg_lenif bitand(outr(row(i),col(i),1)=1 result(p,1)=1; else result(p,1)=0; end if p =msg_len break; end p=p+1;endmessage=fopen(Message.txt,w); msg,msg_len=fread(message,ubit1);bit_error=find(result=msg_len) bit_error_count=size(bit_error,1); ber(compressibility/10)=bit_error_count/(msg_len+eps); endend compressibility=10:10:100;

温馨提示

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

评论

0/150

提交评论