LSB隨機(jī)替換嵌入算法-2016年6月26
一:代碼
%輸入:載體圖像C脏答、密鑰k、秘密消息M
%輸出:載密圖像C_M、C_C
%輸入輸出格式:[C_M,C_C]=lsbRhide('Lena.bmp','message.txt',100)
%步驟:
%1铣焊、讀取圖像烹困、并且對(duì)載密圖形賦空間C_M
%2、讀取秘密消息文本并轉(zhuǎn)化為二進(jìn)制侦镇,并保存到向量M中灵疮,記錄二進(jìn)制長度L
%3、利用randinterval函數(shù)找到嵌入位置[row col]=randinterval(C,L,K)
%4壳繁、將二進(jìn)制嵌入到相應(yīng)指定的嵌入位置
% 具體方法為 i=1:L
% C_M(row(i),col(i))=C1(row(i),col(i))-mod(C1(row(i),col(i)),2)+M1(i,1)
%5震捣、查看LSB平面分布情況
%6、畫圖展示結(jié)果
function [C_M,C_C]=lsbRhide(C,M,k)
C1=imread(C);
C_M=C1;
C_C=C1;
%讀取秘密消息文件
fileID=fopen(M,'r');
[M1,L]=fread(fileID,'ubit1');
%利用randinterval函數(shù)找到嵌入位置
[row,col]=randinterval(C,L,k);
%將二進(jìn)制嵌入到相應(yīng)指定的嵌入位置
for i=1:L
C_M(row(i),col(i))=C1(row(i),col(i))-mod(C1(row(i),col(i)),2)+M1(i,1);
end
%查看LSB平面分布情況
[m,n]=size(C1);
for i=1:m
for j=1:n
C_C(i,j)=C_M(i,j)-C1(i,j);
end
end
%畫圖展示結(jié)果
subplot(1,2,1);imshow(C_M);title('載密圖像','FontSize',20);
subplot(1,2,2);imshow(mat2gray(C_C));title('LSB平面分布情況','FontSize',20);
二闹炉、實(shí)驗(yàn)結(jié)果展示: