LSB順序替換嵌入算法—2016年6月24日
一、算法描述
輸入:載體C、秘密消息M
輸出:載密圖像C_M、位平面C_C
步驟:
1、讀取載體C、和秘密消息M
2、將秘密消息M轉(zhuǎn)化為二進(jìn)制并保存到向量M中
3、將轉(zhuǎn)化為二進(jìn)制的向量M中的0、1嵌入到載體圖像的LSB平面
4、將載密圖像C_M減去載體圖像C,查看嵌入信息情況
二:代碼
% LSB順序替換嵌入算法--2016年6月24日
% 輸入:載體C、秘密消息M。
% 輸出:載密圖像C_M、位平面C_C
% 1、將秘密消息M轉(zhuǎn)化為二進(jìn)制M1;
% 2、將轉(zhuǎn)化為二進(jìn)制的秘密消息M1嵌入到載體圖像的LSB平面
%3、將載密圖像C_M減去載體圖像C,查看嵌入信息情況
% ---------------------------------------------------
% 函數(shù)功能介紹:實(shí)現(xiàn)LSB順序替換嵌入
% 使用示例:function [C_M,C_C]=lsbshide('Lena.bmp','message.txt');
%輸入輸入?yún)?shù)介紹:
%C:載體圖像
%M:秘密消息
%C_M:載密圖像
%C_C:lsb平面
function [C_M,C_C]=lsbshide(C,M)
C=imread(C);%讀取圖像并存放到C中
C_M=C;
fileID=fopen(M,'r');%打開(kāi)文件
[M,L]=fread(fileID,'ubit1');%讀取文件的內(nèi)容,并以二進(jìn)制方式存放到向量M中
%將二進(jìn)制的秘密消息M嵌入到載密圖像的LSB面
[m,n]=size(C);
p=1;%嵌入計(jì)數(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置零,然后加上秘密消息中的對(duì)應(yīng)的0或1
if L==p %嵌入終止條件:當(dāng)嵌入的個(gè)數(shù)為秘密消息的長(zhǎng)度時(shí),跳出循環(huán),不再嵌入
break;
end
p=p+1;
end
if L==p %嵌入終止條件:當(dāng)嵌入的個(gè)數(shù)為秘密消息的長(zhǎng)度時(shí),跳出循環(huán),不再嵌入
break;
end
end
%查看嵌入信息情況:將載密圖像減去載體圖像
for i=1:m
for j=1:n
C_C(i,j)=C_M(i,j)-C(i,j);
end
end
%畫(huà)圖展示
subplot(1,2,1);imshow(C_M);title('載密圖像','FontSize',20);
subplot(1,2,2);imshow(mat2gray(C_C));title('LSB平面分布情況圖','fontsize',20);
三:算法實(shí)現(xiàn)結(jié)果展示

四:?jiǎn)栴}總結(jié)
1、細(xì)節(jié)問(wèn)題:關(guān)鍵字function寫(xiě)成funciton和函數(shù)名fopen寫(xiě)成fpen
2、已有函數(shù)的使用積累:fread函數(shù)的使用以及讀取出的二進(jìn)制的格式,ubit1表示2位表示數(shù),即二進(jìn)制。依次類(lèi)推,ubitn表示2^n進(jìn)制。
3、載密圖像C_M應(yīng)該初始化存儲(chǔ)空間,并設(shè)置得和載體圖像一樣大。
4、mat2gray函數(shù)的使用,將矩陣轉(zhuǎn)換成二值圖像,便于觀察LSB平面嵌入情況