LSB隨機(jī)替換嵌入與提取實(shí)現(xiàn)

描述:將message.txt中的明文消息隨機(jī)嵌入到載體圖像中古沥,得到載密圖像。從載密圖像中將消息提取出來(lái)址晕,放至文件secret.txt中致讥。

一:代碼

%LSB隨機(jī)替換的嵌入與提取實(shí)現(xiàn)--2016年6月28日
%輸入:載體圖像C仅仆、秘密消息M,密鑰k
%顯示:載體圖像C、載密圖像C_M垢袱、LSB位平面C_C
%使用的子函數(shù)有:lsbRhide和lsbRget

C='Lena.bmp';
M='message.txt';
k=100;
%讀取載體圖像
C1=imread(C);

%嵌入消息蝇恶,使用函數(shù)lsbRhide
[C_M,C_C,L]=lsbRhide(C,M,k);

%將載密圖像保存到Lena_R.bmp中
imwrite(C_M,'Lena_R.bmp','bmp');

%提取消息,使用函數(shù)lsbRget
lsbRget('Lena_R.bmp',L,k);

%結(jié)果展示
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);

隨機(jī)間隔子函數(shù):randinterval.m

%隨機(jī)間隔法--2016年6月25日
%算法描述:
%輸入:載體圖像C惶桐、嵌入信息長(zhǎng)度L撮弧、密鑰k
%輸出:嵌入位置的行向量row、列向量col姚糊;
%步驟:
%1贿衍、讀取圖像矩陣C,并且讀出圖像C的大小m*n救恨,計(jì)算總體像素個(gè)數(shù)N
%2贸辈、計(jì)算間隔k1和k2,k1=floor(N/L),k2=k1-2;
%3肠槽、用密鑰k產(chǎn)生一個(gè)長(zhǎng)度為L(zhǎng)的隨機(jī)序列a;
%4擎淤、設(shè)置長(zhǎng)度均為L(zhǎng)的行向量row和列向量col,用來(lái)保存嵌入位置秸仙,第一個(gè)位置都為1
%5嘴拢、設(shè)置兩個(gè)變量r、c存放當(dāng)前嵌入位置寂纪,并初始化值都為1
%6席吴、循環(huán)從2到L,若隨機(jī)數(shù)a(i)>0.5,則c=c+k1;否則c=c+k2;
%    判斷c>n捞蛋?孝冒,若大于,則r=r+1(換行)若r>m?,則輸出載體圖像太心馍肌庄涡;
%    c=mod(c,n);若c==0,則c=n(最后一個(gè)位置)搬设,將展示的r和賦給向量row和col中保存
%----------------------------------------------------------------------------------
%函數(shù)說(shuō)明:
%輸入:載體C穴店,嵌入長(zhǎng)度L,密鑰k
%輸出:嵌入位置對(duì)應(yīng)的行向量和列向量row焕梅、col
%函數(shù)功能介紹:隨機(jī)間隔法找出嵌入位置


function [row,col]=randinterval(C,L,k)

%讀取圖像矩陣迹鹅,并計(jì)算矩陣大小和像素個(gè)數(shù)
C=imread(C);
[m,n]=size(C);
N=m*n;

%計(jì)算隨機(jī)間隔k1和k2
k1=floor(N/L);
k2=k1-2;

%產(chǎn)生一個(gè)長(zhǎng)度為L(zhǎng)的隨機(jī)序列
rand('seed',k);
a=rand(1,L);

%設(shè)置row和col、r和c
row=zeros(1,L);
col=zeros(1,L);
r=1;
c=1;
row(1,1)=r;
col(1,1)=c;

%設(shè)置嵌入位置
for i=2:L
    if a(i)>0.5 
        c=c+k1;
   else
    c=c+k2;
   end
  if c>n
       r=r+1;%行數(shù)加1
       if r>m
             error('載體圖像太小不能將秘密信息隱藏進(jìn)去贞言!')
       end
       c=mod(c,n);
       if c==0
            c=1;%進(jìn)入下一行的第一列
       end
   end
row(1,i)=r;
col(1,i)=c;
end

消息嵌入子函數(shù):lsbRhide.m

%LSB隨機(jī)替換嵌入算法-2016年6月26
%輸入:載體圖像C斜棚、密鑰k、秘密消息M
%輸出:載密圖像C_M、C_C
%輸入輸出格式:   [C_M,C_C,L]=lsbRhide('Lena.bmp','message.txt',100)
%步驟
%1弟蚀、讀取圖像蚤霞、并且對(duì)載密圖形賦空間C_M
%2、讀取秘密消息文本并轉(zhuǎn)化為二進(jìn)制义钉,并保存到向量M中昧绣,記錄二進(jìn)制長(zhǎng)度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、畫(huà)圖展示結(jié)果

function [C_M,C_C,L]=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

% %保存載密圖像
% imwrite(C_M,'Lena_R.bmp','bmp');

% %畫(huà)圖展示結(jié)果
  % subplot(1,2,1);imshow(C_M);title('載密圖像','FontSize',20);
  % subplot(1,2,2);imshow(mat2gray(C_C));title('LSB平面分布情況','FontSize',20);
% 

消息嵌入子函數(shù):lsbRget.m

%LSB隨機(jī)替換提取--2016年6月27日
%輸入:載密圖像C_M删壮、密鑰k贪绘、嵌入消息長(zhǎng)度L
%輸出:秘密消息S
%輸入輸出格式: S=lsbRget('Lena_R.bmp',L,100)
%步驟:
%1、讀取圖像內(nèi)容
%2央碟、獲取嵌入位置 row税灌、col
%3、將嵌入位置消息存放到S中
%4亿虽、將二進(jìn)制化為ASCII碼
%5菱涤、打開(kāi)文件,將消息S寫(xiě)入secret文件中
%---------------------------------
% C_M='Lena_R.bmp';
% L=12288;
% k=100;
%------------------------------------

function S=lsbRget(C_M,L,k)
%讀取圖像矩陣
C_M1=imread(C_M);

%獲取嵌入位置row洛勉、col
[row,col]=randinterval(C_M,L,k);

%將嵌入位置消息存放到S中
S=zeros(1,L);
for i=1:L
     S(1,i)=mod(C_M1(row(i),col(i)),2);
end

%將二進(jìn)制化為ASCII碼值
SC=zeros(1,L);
a=L/8;
for i=1:a
     for j=1:8
          SC(1,i)=SC(1,i)+S(1,(i-1)*8+j)*power(2,(j-1));
    end
end

 %打開(kāi)文件粘秆,將消息寫(xiě)入secret.txt文件中
fileID=fopen('secret.txt','w');
for i=1:a
     fwrite(fileID,SC(1,i),'char');
end
fclose(fileID);

二、實(shí)驗(yàn)結(jié)果展示
1坯认、載體圖像翻擒、載密圖像氓涣、LSB平面分布情況

Paste_Image.png

2牛哺、嵌入消息message.txt和提取消息secret.txt

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市劳吠,隨后出現(xiàn)的幾起案子引润,更是在濱河造成了極大的恐慌,老刑警劉巖痒玩,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淳附,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蠢古,警方通過(guò)查閱死者的電腦和手機(jī)奴曙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)草讶,“玉大人洽糟,你說(shuō)我怎么就攤上這事。” “怎么了坤溃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拍霜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我薪介,道長(zhǎng)祠饺,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任汁政,我火速辦了婚禮道偷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘记劈。我一直安慰自己试疙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布抠蚣。 她就那樣靜靜地躺著祝旷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘶窄。 梳的紋絲不亂的頭發(fā)上怀跛,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音柄冲,去河邊找鬼吻谋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛现横,可吹牛的內(nèi)容都是我干的漓拾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼戒祠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骇两!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起姜盈,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤低千,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后馏颂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體示血,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年救拉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了难审。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亿絮,死狀恐怖告喊,靈堂內(nèi)的尸體忽然破棺而出拂铡,到底是詐尸還是另有隱情,我是刑警寧澤葱绒,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布感帅,位于F島的核電站,受9級(jí)特大地震影響地淀,放射性物質(zhì)發(fā)生泄漏失球。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一帮毁、第九天 我趴在偏房一處隱蔽的房頂上張望实苞。 院中可真熱鬧,春花似錦烈疚、人聲如沸黔牵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猾浦。三九已至,卻和暖如春灯抛,著一層夾襖步出監(jiān)牢的瞬間金赦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工对嚼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夹抗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓纵竖,卻偏偏與公主長(zhǎng)得像漠烧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子靡砌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理已脓,服務(wù)發(fā)現(xiàn),斷路器乏奥,智...
    卡卡羅2017閱讀 134,638評(píng)論 18 139
  • 一:代碼 調(diào)用的子函數(shù):lsbshide.m 調(diào)用子函數(shù):lsbsget.m 二摆舟、實(shí)驗(yàn)結(jié)果展示1、載體圖像邓了、載密圖...
    Virony_ne閱讀 7,589評(píng)論 1 4
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,858評(píng)論 25 707
  • 學(xué)習(xí)整理一年多了骗炉,之前是徹底踐行“斷舍離”理念,瘋狂地扔?xùn)|西蛇受,現(xiàn)在到了實(shí)踐收納的環(huán)節(jié)句葵,對(duì)于整理這件事情,才有了系統(tǒng)...
    安然于行閱讀 5,477評(píng)論 0 9
  • 濃霧做成的燈籠剂碴,提著 走過(guò)一片荒蕪的墳地, 草襲過(guò)衣裙轻专,蹭了心上青綠的血忆矛。 溪水長(zhǎng)長(zhǎng),流不盡 土地的每一處脈絡(luò)请垛。 ...
    陌九閱讀 450評(píng)論 2 8