基于某LSB地信息隐藏算法.docx
《基于某LSB地信息隐藏算法.docx》由会员分享,可在线阅读,更多相关《基于某LSB地信息隐藏算法.docx(10页珍藏版)》请在冰豆网上搜索。
基于某LSB地信息隐藏算法
《信息隐藏技术》实验
实验三:
基于LSB的信息隐藏算法
学生姓名:
学号:
学院:
计算机学院
专业:
信息安全
班级:
指导教师:
2015年12月16日
1实验目的
该实验为验证性实验。
目的是通过实验使学生掌握经典隐藏算法,在MATLAB环境下,编写基于图像的LSB信息隐藏算法程序。
用MATLAB函数实现LSB信息隐藏,并进行分析。
2实验环境及内容
●实验环境
安装MATLAB7.0的计算机
●实验内容
首先学会提取图片的八个位平面,然后再将信息隐藏在最低位平面中。
3实验原理
LSB(leastsignificantbit)算法是最早提出的一种典型的空间域信息隐藏算法。
它使用特定的密钥通过伪随机序列发生器产生随机信号,然后按一定的规则排列成二维水印信号,并逐一插到原始图像相应像素值的最低几位。
由于水印信号隐藏在最低位,相当于叠加了一个能量微弱的信号,因此在视觉和听觉上很难察觉。
作为大数据量的信息隐藏方法,LSB在隐藏通信中仍占据相当重要的地位。
隐秘算法核心是将我们选取的像素点的最不重要位依次替换成秘密信息,以达到信息隐秘的目的。
嵌入过程包括选择一个图像载体像素点的子集{j1,…,jl(m)},然后在子集上执行替换操作像素cji←→mi,即把cji的LSB与秘密信息mi进行交换(mi可以是1或0)。
一个替换系统也可以修改载体图像像素点的多个比特,例如,在一个载体元素的两个最低比特位隐藏两比特、三比特信息,可以使得信息嵌入量大大增加但同时将破坏载体图像的质量。
在提取过程中,找出被选择载体图像的像素序列,将LSB(最不重要位)排列起来重构秘密信息,算法描述如下:
嵌入过程:
for(i=1;i<=像素序列个数;i++)
si←ci
for(i=1;i<=秘密消息长度;i++)
//将选取的像素点的最不重要位依次替换成秘密信息
sji←cji←→mi
4实验步骤
●提取位平面源代码
a=imread('1.jpg');
b=rgb2gray(a);
%将彩色图像转换为灰度图像
c=bitand(b,1);
figure
(1);
imshow(c);
d=bitand(b,2);
figure
(2);
imshow(d);
e=bitand(b,4);
figure(3);
imshow(e);
f=bitand(b,8);
figure(4);
imshow(f);
i=bitand(b,16);
figure(5);
imshow(i);
g=bitand(b,32);
figure(6);
imshow(g);
h=bitand(b,64);
figure(7);
imshow(h);
i=bitand(b,128);
figure(8);
imshow(i);
●提取位平面结果
●信息隐藏源代码
x=fopen('wyw.txt','r');
%
(1)将秘密信息读入
[msg,length]=fread(x,'ubit1');
%
(2)转化为二进制,并计算秘密信息长度
a=imread('1.jpg');
a=rgb2gray(a);%%将彩色图像转换为灰度图像
c=a;
[m,n]=size(a);
%(3)计算图像容量
figure
(1);
imshow(a);
%将原始图像展示出来
if(length>m*n)
error('thetxterror');
end
%(4)判断秘密信息长度是否大于图像的容量
k=1;
forj=1:
n
fori=1:
m
c(i,j)=a(i,j)-mod(a(i,j),2)+msg(k);
k=k+1;
if(k==length)
break
end
end
if(k==length)
break
end
end
d=a-c;
figure
(2);
imshow(c);
figure(3);
imshow(d,[]);
imwrite(c,'2.jpg');
%(6)存储为图像
●原图
●隐藏后图片
●检验图片
5实验思考和总结
通过实验使我们掌握经典信息隐藏算法,在MATLAB环境下,编写基于图像的LSB信息隐藏算法程序。
用MATLAB函数实现LSB信息隐藏,并进行分析。
我们在实验前要做好充分准备,复习实验所涉及的知识点,才能更好的理解实验过程。
实验时注意记录实验过程中产生的数据、出现的问题及解决方案。