完整word版,LSB算法实现

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

LSB算法实现实验报告
一、实验环境
1、计算机一台;
2、Windows XP操作系统、MATLAB7.5
二、实验内容与原理
LSB(Least Significant Bit)算法是将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。

LSB算法的基本原理:对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。

由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。

然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。

因此LSB算法最初是用于脆弱性水印的。

LSB算法基本步骤:
1、将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;
2 、用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
3、将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。

图1. LSB原理示意图
三、实验步骤
3.1信息嵌入
Picture=imread(‘c:\\test.tif’); %读入载体图像
Double_Picture=Picture;
Double_Picture=double(Double_Picture);
%将图像转换为二进制
‘c:\\test.txt’_id=fopen(‘c:\\test.txt’,'r'); %读取秘密信息文件
[msg,len]=fread(‘c:\\test.txt’_id,'ubit1');
[m,n]=size(Double_Picture);
p=1; %p 为秘密信息的位计数器for f2=1:n
for f1=1:m
Double_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_
Picture(f1,f2),2)+msg(p,1);
%将秘密信息按位隐藏入连续的像素中
if p==len
break;
end
p=p+1;
end
if p==len
break;
end
end
Double_Picture=uint8(Double_Picture);
imwrite(Double_Picture,‘c:\\result.tif’); %生成秘密信息
subplot(121);imshow(Picture);title(' 未嵌入信息的图片');
subplot(122);imshow(Double_Picture);title(' 嵌入信息的图片');
图2. 嵌入信息前后结果图
3.2 信息提取
Picture=imread(‘c:\\result.tif’); %读入隐秘信息的图像
Picture=double(Picture);
[m,n]=size(Picture);
frr=fopen(‘c:\\result.txt’,'a');
len=8; %设定隐秘信息长度
p=1;
for f2=1:n
for f1=1:m
if bitand(Picture(f1,f2),1)==1
%顺序提取图像相应像素LSB 的秘密信息
fwrite(frr,1,'bit1');
result(p,1)=1;
else
fwrite(frr,0,'bit1');
result(p,1)=0;
end
if p==len %判断秘密信息是否读完
break;
end
p=p+1;
end
if p==len
break;
end
end
fclose(frr);
图 3 提取结果
四、结论
基于Matlab 实现了图像的LSB 信息隐藏算法,并讨论了两种图像像素选择算法,通过比较可以发现,使用随机选择算法会将秘密信息均匀地嵌入到整个图像中,增强了秘密信息的不可见性和破解的难度,而顺序选择算法则容易受到视觉攻击。

从以上分析可知图像嵌入像素位置的选择对秘密信息的安全性有着至关重要的作用。

为了实现增强LSB 算法的安全性,可以在信息嵌入前对其进行加密处理。

相关文档
最新文档