基于-LSB信息隐藏算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
《信息隐藏技术》实验
实验三:基于LSB的信息隐藏算法
学生:学号:
学院: 计算机学院
专业: 信息安全
班级:
指导教师:
2015年12 月16 日
目录
1 实验目的 (2)
2 实验环境及容 (2)
3 实验原理 (2)
4 实验步骤 (2)
5 实验思考和总结 (2)
1实验目的
该实验为验证性实验。目的是通过实验使学生掌握经典隐藏算法,在MATLAB环境下,编写基于图像的LSB信息隐藏算法程序。用MATLAB函数实现LSB信息隐藏,并进行分析。
2实验环境及容
●实验环境
安装MATLAB7.0的计算机
●实验容
首先学会提取图片的八个位平面,然后再将信息隐藏在最低位平面中。
3实验原理
LSB(least significant bit)算法是最早提出的一种典型的空间域信息隐藏算法。它使用特定的密钥通过伪随机序列发生器产生随机信号,然后按一定的规则排列成二维水印信号,并逐一插到原始图像相应像素值的最低几位。由于水印信号隐藏在最低位,相当于叠加了一个能量微弱的信号,因此在视觉和听觉上很难察觉。作为大数据量的信息隐藏方法,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('the txt error');
end
%(4)判断秘密信息长度是否大于图像的容量
k = 1;
for j = 1:n
for i = 1:m
c(i, j) = a(i, j) - mod(a(i, j), 2) + msg(k);
k = k + 1;
第1页共12页
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)存储为图像
原图
第1页共12页
●隐藏后图片
●检验图片
5实验思考和总结
通过实验使我们掌握经典信息隐藏算法,在MATLAB环境下,编写基于图像的LSB信息隐藏算法程序。用MATLAB函数实现LSB 信息隐藏,并进行分析。我们在实验前要做好充分准备,复习实验所涉及的知识点,才能更好的理解实验过程。实验时注意记录实验过程中产生的数据、出现的问题及解决方案。
第1页共12页