【matlab學習筆記】圖像加密的簡單方法
02-07
信息加密與隱藏技術,是利用人類感覺器官的不敏感,以及多媒體數字信號本身存在的冗餘,將秘密信息隱藏在載體中,不被察覺或者不易被察覺到,並且不影響載體本身的感覺效果,以此達到隱秘傳輸信息的目的。
下面用Henon加密演算法將照片A加密到照片B中。
照片A:王凱
照片B:山崎賢人圖像加密演算法有很多,Henon演算法是利用混沌序列將圖像矩陣的行列打亂。演算法如下:
Xn+1 = 1 - αXn^2 + Yn
Yn = βXn
其中α=1.4;β=0.3,使用密鑰k=-0.4
使用密鑰作為初始值,得到兩個混沌序列,然後將照片A的序列打亂。
clc,clear;
a = imread(11.jpg);ws1 = size(a); %讀入保密圖像b = imread(121.jpg);ws2 = size(b);%讀入載體nb = imresize(b,ws1(1:2)); %把載體圖像變為與保密圖像相同大小
key = -0.40001;%給出秘鑰L = max(ws1);x(1)=key;y(1)=key;alpha = 1.4;beta=0.3;for i =1:L-1 %生成兩個混沌序列 x(i+1)=1-alpha*x(i)^2+y(i);y(i+1)=beta*x(i);end
x(ws1(1,1)+1:end)=[];%刪掉x後面一部分元素[sx,ind1] = sort(x);[sy,ind2]=sort(y);%對混沌序列從小到大排序ea(ind1,ind2,:)=a;%打亂保密圖像的行和列,生產加密提箱矩陣eaimshow(ea);%顯示保密圖像加密所得到的圖像
將圖片A按照混沌序列加密後結果如下,因為王凱那張背景是褐色,衣服是黑色,所以變換成混沌序列之後也是這種褐紅色。
然後將這個圖片加到圖片B中nb2=bitand(nb,240);%載體圖像與11110000=240逐位運算
ea2=bitand(ea,240);%加密圖像與11110000逐位運算ea2=ea2/16;%加密圖像高4位移到低4位da = bitor(nb2,ea2);%把加密圖像嵌入載體圖像的低4位,構成合成圖像imshow(da)
最後得到合成圖像如下:
最後得到的圖片損失了很多信息,所以這張山崎賢人,看上去明顯不如原圖清晰。使用代碼解密得到原圖:
da = bitor(nb2,ea2);%把加密圖像嵌入載體圖像的低4位,構成合成圖像
da2 = bitand(da,15)*16;%對加密圖像進行解密da3 = da2(ind1,ind2,:);imshow(da3);%提取並解密還原後的圖像
得到原圖如下:
推薦閱讀:
※我不喜歡的 Firefox 同步
※什麼是AEAD加密
※【VBA技巧】- 如何儘可能的保護VBA代碼?
※TrueCrypt 为什么突然宣布不安全了?
※WinRAR 的加密效果怎麼樣,其中加密文件名是什麼意思?