【matlab學習筆記】圖像加密的簡單方法

信息加密與隱藏技術,是利用人類感覺器官的不敏感,以及多媒體數字信號本身存在的冗餘,將秘密信息隱藏在載體中,不被察覺或者不易被察覺到,並且不影響載體本身的感覺效果,以此達到隱秘傳輸信息的目的。

下面用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;%打亂保密圖像的行和列,生產加密提箱矩陣ea

imshow(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 的加密效果怎麼樣,其中加密文件名是什麼意思?

TAG:图片处理 | 加密 | 文件加密 |