clc;
close all;
clear;
A=imread('lena.jpg');
B=A;
message='Hello,I am a little sister! ';
m=length(message);
imshow(A)
title('原始图片');
n=size(A);
k=1;
% LSB 算法:
for i=1:n(1)
for j=1:n(2)
if k<=m
%如果消息输入完成则为0
h=bitget(double(message(k)),8:-1:1);
else
h=[0,0,0,0,0,0,0,0];
end
c=bitget(A(i,j),8:-1:1);
if mod(j,8) == 0
p=8;
else
p=mod(j,8);
end
v=0;
for q=1:7
v=xor(v,c(q));
end
v=xor(v, h(p) );
B(i,j)=bitset(A(i,j),1,v);%对A(i,j)的第一位置数
if mod(j,8) == 0
k=k+1;
end
end
%end LSB
end
figure,imshow(B)
imwrite(B,'new.jpg');
title('隐藏信息的图片');
%double(B(1,:))-double(A(1,:))
% read message:
out=char;
tmp=0 ;
t=1;
for i=1:n(1)
for j=1:n(2)
c=bitget(B(i,j),8:-1:1);
v=0;
for q=1:8
v=xor(v,c(q));
end
if mod(j,8)==0
p=1;
else
p=9-mod(j,8);
end
tmp=bitset(tmp,p,v);
if mod(j,8)==0
out(t)=char(tmp);
t=t+1;
tmp=0;
end
end
end
out