基于LSB的信息提取算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《信息隐藏技术》实验

实验四:基于LSB的信息提取算法

学生姓名:学号:

学院: 计算机学院

专业: 信息安全

班级:

指导教师:

2015年12 月16 日

目录

1 实验目的 (2)

2 实验环境及内容 (2)

3 实验原理 (2)

4 实验步骤 (3)

5 实验思考和总结 (6)

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++)

{ i←→ji//序选取

mi←LSB(cji)

}

4实验步骤

提取信息源代码

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;

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)存储为图像

y = fopen('EXA4.txt', 'w'); lenght = 500;

k = 1;

for j = 1:n

for i = 1:m

p = d(i, j);

fwrite(y, p, 'ubit1'); k = k + 1;

if(k == length)

break;

end

end

if(k == length)

break;

end

end

fclose(y);

提取信息结果截图

5实验思考和总结

通过实验使我们掌握经典信息隐藏算法,在MATLAB环境下,编写基于图像的LSB信息隐藏算法程序。用MATLAB函数实现LSB信息提取,并进行分析。我们在实验前要做好充分准备,复习实验所涉及的知识点,才能更好的理解实验过程。实验时注意记录实验过程中产生的数据、出现的问题及解决方案。

相关文档
最新文档