⑴ LSB算法的原理是什么
LSB算法
首先 将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;
然后 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
最后 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
⑵ 信息隐藏的问题
信息隐藏的好处,信息隐藏是为了降低耦合性,通过降低耦合,可以达到提高可复用性、可维护性这2个目的。
⑶ LSB算法有何优缺点
你中南信安的吧。加分。我给你发实验报告,给20分最好了,这是我的新ID,没财富。
综上所述,LSB有如下缺点:
1) 嵌入消息较大时,所花时间较长。
2) 只能处理简单的流格式的文件。
3) 为了满足水印的不可见性,允许嵌入的水印强度较低,对空域的各种操作较为敏感。
4) 基本的LSB算法抗JPEG压缩能力弱。
5) 鲁棒性差。
LSB算法有如下优点:
1) 算法简单,易于实现,计算速度也快。
2) 在基础算法上能够很快的进行改进,并在脆弱性水印中应用广泛。
3) 由于能在最低有效位(一般是最后两位)进行嵌入,故对于256色(8位)的RGB图像,在3层图像中均可插入1/8到1/4的消息,总的来说,容量还是足够大的。
⑷ 什么是LSB算法
LSB(LeastSignificant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显着位,改变这一位置对载体图像的品质影响最小。
基本原理:
对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显着分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。
LSB算法基本步骤:
1.将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;
2.用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
3.将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
%信息嵌入
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为秘密信息的位计数器
forf2=1:n
forf1=1:m
Double_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_
Picture(f1,f2),2)+msg(p,1);
%将秘密信息按位隐藏入连续的像素中
ifp==len
break;
end
p=p+1;
end
ifp==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('嵌入信息的图片');
%信息提取
Picture=imread(‘c:\result.tif’);
%读入隐秘信息的图像
Picture=double(Picture);
[m,n]=size(Picture);
frr=fopen(‘c:\result.txt’,'a');
len=8;
%设定隐秘信息长度
p=1;
forf2=1:n
forf1=1:m
ifbitand(Picture(f1,f2),1)==1
%顺序提取图像相应像素LSB的秘密信息
fwrite(frr,1,'bit1');
result(p,1)=1;
else
fwrite(frr,0,'bit1');
result(p,1)=0;
end
ifp==len
%判断秘密信息是否读完
break;
end
p=p+1;
end
ifp==len
break;
end
end
fclose(frr);