LSB算法的改进
传统LSB算法因为其变换规律十分明显,所以很容易被隐写分析检查出来,所以在变换时我们可以用随机数来增加算法的隐蔽性。
一张封面,一张二值图
算法
pichide=LSB(piccover,pic2ray);
subplot(1,2,1),imshow(piccover)
subplot(1,2,2),imshow(pichide)
imshow(inLSB(pichide))
封面和隐藏信息后的封面对比
从图片反解出隐藏信息后图片
LSB.m
function piccover = LSB( piccover,pic2ray ) %piccover封面,pic2ray二值图
[M,N]=size(piccover); %M,N封面行列,
[m,n]=size(pic2ray); %m,n二值图行列
if(m<=M&&n<=N)
for i=1:m
for j=1:n
if pic2ray(i,j)==1&&mod(piccover(i,j),2)==1
continue;
elseif pic2ray(i,j)==1&&mod(piccover(i,j),2)==0
if piccover(i,j)==0
piccover(i,j)=piccover(i,j)+1;
else
piccover(i,j)=piccover(i,j)+randsrc;
end
elseif pic2ray(i,j)==0&&mod(piccover(i,j),2)==0
continue;
elseif pic2ray(i,j)==0 && mod(piccover(i,j),2)==1
if piccover(i,j)==255
piccover(i,j)=piccover(i,j)-1;
else
piccover(i,j)=piccover(i,j)+randsrc;
end
end
end
end
else
fprintf('朋友,封面大小不够唉!')
end
end
inLSB.m
function pichide = inLSB(pichide)
[M,N]=size(pichide);
for i=1:M
for j=1:N
if mod(pichide(i,j),2)==1
pichide(i,j)=255;
else
pichide(i,j)=0;
end
end
end
end