一:代碼
%LSB順序替換嵌入和提取
%輸入:載體圖像C,秘密消息M
%顯示:載體圖像、載密圖像瘦真、LSB平面分布情況
%嵌入消息明文message.txt,提取消息為secret.txt
C='Lena.bmp';
M='message.txt';
C1=imread(C);
%調(diào)用嵌入函數(shù)lsbshide
[C_M,C_C,L]=lsbshide(C,M);
%調(diào)用提取函數(shù)lsbsget
lsbsget('Lena_S.bmp',L);
%畫圖展示
subplot(1,3,1);imshow(C1);title('載體圖像','FontSize',20);
subplot(1,3,2);imshow(C_M);title('載密圖像','FontSize',20);
subplot(1,3,3);imshow(mat2gray(C_C));title('LSB平面分布情況圖','fontsize',20);
調(diào)用的子函數(shù):lsbshide.m
% LSB順序替換嵌入算法--2016年6月24日
% 輸入:載體C花枫、秘密消息M。
% 輸出:載密圖像C_M尚困、位平面C_C
% 1蠢箩、將秘密消息M轉(zhuǎn)化為二進制M1;
% 2事甜、將轉(zhuǎn)化為二進制的秘密消息M1嵌入到載體圖像的LSB平面
%3谬泌、將載密圖像C_M減去載體圖像C,查看嵌入信息情況
% ---------------------------------------------------
% 函數(shù)功能介紹:實現(xiàn)LSB順序替換嵌入
% 使用示例:function [C_M,C_C,L]=lsbshide('Lena.bmp','message.txt');
%輸入輸入?yún)?shù)介紹:
%C:載體圖像
%M:秘密消息
%C_M:載密圖像
%C_C:lsb平面
function [C_M,C_C,L]=lsbshide(C,M)
C=imread(C);%讀取圖像并存放到C中
C_M=C;
fileID=fopen(M,'r');%打開文件
[M,L]=fread(fileID,'ubit1');%讀取文件的內(nèi)容逻谦,并以二進制方式存放到向量M中
%將二進制的秘密消息M嵌入到載密圖像的LSB面
[m,n]=size(C);
p=1;%嵌入計數(shù)器
for i=1:m
for j=1:n
C_M(i,j)=C(i,j)-mod(C(i,j),2)+M(p,1);%嵌入方法是先將LSB置零掌实,然后加上秘密消息中的對應(yīng)的0或1
if L==p %嵌入終止條件:當(dāng)嵌入的個數(shù)為秘密消息的長度時,跳出循環(huán)邦马,不再嵌入
break;
end
p=p+1;
end
if L==p %嵌入終止條件:當(dāng)嵌入的個數(shù)為秘密消息的長度時贱鼻,跳出循環(huán),不再嵌入
break;
end
end
imwrite(C_M,'Lena_S.bmp','bmp');
%查看嵌入信息情況:將載密圖像減去載體圖像
for i=1:m
for j=1:n
C_C(i,j)=C_M(i,j)-C(i,j);
end
end
調(diào)用子函數(shù):lsbsget.m
%LSB順序替換提取--2016年6月27
%輸入:載密圖像C_M滋将,嵌入長度L
%輸出:秘密消息向量S
%輸入輸出格式:S=lsbsget('Lena_S.bmp',L)
%步驟:
%1邻悬、讀取載密圖像C_M
%2、讀出LSB平面中0随闽、1存入S中
%3父丰、將二進制向量S轉(zhuǎn)化為ASCII碼并存放到文本文件secret.txt中
function S=lsbsget(C_M,L)
%讀取載密圖像矩陣
C_M1=imread(C_M);
[m,n]=size(C_M1);
S=zeros(1,L);
%讀出LSB平面中0、1存入S中
for i=1:m
for j=1:n
if (i-1)*m+j>L%判斷嵌入長度是否大于L橱脸,若大于L础米,則終止循環(huán)
break;
end
S(1,(i-1)*m+j)=mod(C_M1(i,j),2);
end
if (i-1)*m+j>L%判斷嵌入長度是否大于L,若大于L添诉,則終止循環(huán)
break;
end
end
%將二進制向量S轉(zhuǎn)化為ASCII碼并存放到文本文件secret中
fileID=fopen('secret.txt','w');
a=L/8;%計算字符個數(shù)
SC=zeros(1,a);
for i=1:a
b=0;
for j=1:8
b=b+S(1,(i-1)*8+j)*power(2,j-1);
end
SC(1,i)=b;
fwrite(fileID,SC(1,i),'char');
end
fclose(fileID);
二屁桑、實驗結(jié)果展示
1、載體圖像栏赴、載密圖像蘑斧、LSB平面分布情況
Paste_Image.png
2、嵌入的消息message.txt须眷,提取的消息secret.txt
Paste_Image.png