三維空間的圖像加密算法
為了實(shí)現(xiàn)圖像安全,快速給圖像文件加密,我們利用了圖像像素可以插入到相鄰像素之間以及拉伸折疊的思想設(shè)計(jì)了一種基于三維坐標(biāo)的圖像加密算法。
一、把二維十進(jìn)制矩陣轉(zhuǎn)化為三維二進(jìn)制矩陣
對(duì)二維圖像的處理一般是把數(shù)字圖像讀成N×M分別為原二維矩陣的長(zhǎng)和寬,K為十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后的二進(jìn)制位數(shù)。如下圖1所示:

二、映射思想
設(shè)三維矩陣在在IJ坐標(biāo)的投影上一個(gè)N×N二維矩陣(當(dāng)投影不是N×N的方陣時(shí),可以用插補(bǔ)法把它補(bǔ)成投影時(shí)是方陣),新映射方法就是根據(jù)圖像像素能夠插入到其他相鄰的像素之間的性質(zhì)。根據(jù)方向的不同,映射分為左映射跟右映射。
首先把三維矩陣沿平行于K軸,沿著IJ平面的對(duì)角先把三維矩陣切開(kāi),分成左右兩部分。左映射就是在IJ平面上,把左半邊矩陣從左到右第一行的所有元素依次插入右半邊矩陣從上到下的第一行兩個(gè)元素之間,并且保持K軸坐標(biāo)不變。然后再把左半邊矩陣從左到右第二行的所有元素依次插入右半邊矩陣從上到下的第二行矩陣中,并且保持K軸坐標(biāo)不變…重復(fù)以上過(guò)程,直到取完左半邊的數(shù)據(jù),如圖2所示。

第2步就是把在IJ平面上第二,三,N行的對(duì)應(yīng)的平行于K軸平面依次添加到第一行的平行于K軸的平面后面,這樣三維矩陣就轉(zhuǎn)化成為了一個(gè)的二維矩陣,如圖3所示。

最后對(duì)二維矩陣進(jìn)行置亂,然后把矩陣還原為原來(lái)的8×N×N矩陣。
其中除了最后一步對(duì)二維矩陣進(jìn)行置亂之外,前兩步中,數(shù)據(jù)保持K軸不變。右映射與左映射相似,而且是相對(duì)稱的。就是首先把右半邊IJ平面上第一行的元素分別插入到左半邊第一列的兩個(gè)元素之間,然后是第二行…,第三行…。
第2步就是把平行于K軸的,第2,3,…列所在的平面的二維矩陣沿K軸依次添加到第一行所在的平面的矩陣后面。
最后就是對(duì)生成的二維矩陣進(jìn)行置亂,并且把矩陣還原為原來(lái)的8×N×N矩陣。
1、映射的計(jì)算算法
設(shè)圖像讀成8×N×N的三維矩陣A(k,i,j),iJ=0,1,…,N一1,k=0,1,…,7,P(k,m),m=O,1,…,N2_1,k=0,1,…,7;為將A(k,i,j)拉伸為一個(gè)平面后的二維矩陣o(下文的k,iJ,m取值范圍同上)左映射計(jì)算算法如下:
當(dāng)i>j時(shí),有:
![]()
當(dāng)i<=j時(shí),有:
![]()
右映射計(jì)算算法為:
當(dāng)i>j時(shí),有:
![]()
當(dāng)i< =j時(shí),有:
![]()
把二維矩陣P(k,m)折疊成為三維矩陣B(k,i,j)的折疊算法為:
![]()
三、圖像文件加密和解密原理
將左映射和右映射的映射次數(shù)設(shè)計(jì)為密鑰Key,其中當(dāng)取Key的值是第奇數(shù)位時(shí),映射為左映射,且映射次數(shù)為Key的位數(shù)數(shù)字的值,同理,當(dāng)取Key的值是第偶數(shù)位時(shí),映射為右映射,且映射次數(shù)為Key的位數(shù)數(shù)字的值。例如Key=2345表示先左映射2次,然后右映射3次,再左映射4次,最后右映射5次。
1、圖像文件加密過(guò)程如下:
①把二維圖像讀成三維二進(jìn)制矩陣,設(shè)置好密鑰Key;
②取出Key的—位數(shù)字,并根據(jù)數(shù)字位置跟數(shù)字和式(1)一(4)將圖像三維A(k,i,j)轉(zhuǎn)化成二維圖像p(k,m);
③用圖像置亂算法將二維圖像p(k,m)置亂;
④根據(jù)折疊法(式(5)把二維矩陣p(k,m)折疊成為三維矩陣A(k,i,j),繼續(xù)取出Key的一位數(shù),重復(fù)①;
③步直到取完Key的位數(shù);
⑤把最后生成的三維二進(jìn)制矩陣讀成二維十進(jìn)制矩陣;
2、文件解密過(guò)程如下:
①?gòu)奈次蛔x起讀取Key的一位數(shù)字,并且把二維矩陣圖像讀成三維A(k,i,J);
②把三維矩陣A(k,i,j)拉著一個(gè)二維矩陣p(k,m);
![]()
③根據(jù)圖像置亂算法的解密算法把p(k,m)解密,并且根據(jù)讀取的是Key的第幾位數(shù)值和數(shù)值的大小,來(lái)判斷加密是左映射還是右映射和解密次數(shù)。如果加密時(shí)是左映射,則解密方法如下:
當(dāng)i>j時(shí),有:
![]()
當(dāng)i<=j時(shí),有:
![]()
如果圖像文件加密時(shí)是右映射,則解密方法如下:
當(dāng)i>j時(shí),有:
![]()
當(dāng)i<=j時(shí),有:
![]()
④繼續(xù)讀取Key的數(shù)值,重復(fù)(2),(3)步,知道讀取完Key的位數(shù)。
⑤把最后生成的三維二進(jìn)制矩陣轉(zhuǎn)化為二維十進(jìn)制矩陣,則其對(duì)應(yīng)的圖像為所求的解密圖像。
四、圖像文件加密和解密實(shí)例分析
1、圖像文件加密實(shí)例
本文在圖像文件加密過(guò)程中的第3步對(duì)二維圖像p(k,m)是基于改進(jìn)的Logistic映射。
對(duì)L= 256的Lena灰度圖進(jìn)行加密。當(dāng)Key1=1, Key2=01, Key3=123456778和Logistic映射中xo =0.556465656,β=3.943534534534時(shí),圖像文件加密效果如下圖所示。

由圖5,圖7,圖9,圖11可以看出,利用本文提出的加密算法加密的密圖的直方圖與原圖的直方圖是不同的,這說(shuō)明這種加密算法不僅改變了像素的位置還達(dá)到了改變圖像像素的效果,隱藏了直方圖信息,可以有效的抵御已知(選擇)明文攻擊,提高了加密算法的安全性。
2、安全性能分析
本加密算法中涉及了左右映射跟改進(jìn)的Logistic映射,其中左右映射的密鑰空間只與密鑰長(zhǎng)度大小有關(guān)他們之間的關(guān)系如下表1:

密鑰敏感性分析。對(duì)用Key=123456778對(duì)圖像文件加密,然后分別用Key1=123456777,Key2= 123456779和正確的Logistic映射密鑰進(jìn)行解密,如圖1 2,1 3所示。即使加密密鑰和解密密鑰僅有非常小的差異,也無(wú)法解密圖像,加密算法對(duì)密鑰變化非常敏感。

統(tǒng)計(jì)分析:原始圖像中相鄰像素的相關(guān)性是很大的,為了破壞統(tǒng)計(jì)攻擊,必須降低相鄰像素的相關(guān)性,對(duì)圖像中像素點(diǎn)相鄰點(diǎn)進(jìn)行相鄰點(diǎn)分析。
通過(guò)相關(guān)系數(shù)的計(jì)算方法計(jì)算,相鄰點(diǎn)的相關(guān)系數(shù)如表2。

顯然,圖像文件加密后,密圖像素值與相鄰點(diǎn)像素值之間的相關(guān)系數(shù)非常小,解密算法很難利用統(tǒng)計(jì)方法從密圖中恢復(fù)原圖。
最后計(jì)算分析原圖和密圖的不動(dòng)點(diǎn)比o原圖像A的像素點(diǎn)A(iJ),在加密后其圖像灰度值沒(méi)有發(fā)生變化,則稱該像素點(diǎn)為不動(dòng)點(diǎn)。圖像中不動(dòng)點(diǎn)占有像素的百分比稱為該圖像的不動(dòng)點(diǎn)比。在Key=l時(shí),即圖6跟圖4的不動(dòng)點(diǎn)比為0.404%; Key=01,即圖8跟圖4的不動(dòng)點(diǎn)比為0.407%。這說(shuō)明只在一次左映射或者右映射的情況下,不動(dòng)點(diǎn)的數(shù)目很少,99.5%以上的像素點(diǎn)都發(fā)生了改墨,置亂效果很明顯。
最后計(jì)算分析原圖和密圖的不動(dòng)點(diǎn)比。原圖像A的像素點(diǎn)A(i J),在加密后其圖像灰度值沒(méi)有發(fā)生變化,則稱該像素點(diǎn)為不動(dòng)點(diǎn)。圖像中不動(dòng)點(diǎn)占有像素的百分比稱為該圖像的不動(dòng)點(diǎn)比。在Key=1時(shí),即圖6跟圖4的不動(dòng)點(diǎn)比為0.404%; Key=01,即圖8跟圖4的不動(dòng)點(diǎn)比為0.407%0這說(shuō)明只在一次左映射或者右映射的情況下,不動(dòng)點(diǎn)的數(shù)目很少,99.5%以上的像素點(diǎn)都發(fā)生了改變,置亂效果很明顯。
五、新映射與其他混沌映射比較
Baker map是最典型、應(yīng)用最廣的混沌映射之一,在圖像加密領(lǐng)域得到廣泛的應(yīng)用。新映射和Bakermap比較:
①密鑰空間更大。Baker map有兩種形式,但即使是Baker map的一般形式(即密鑰不是圖像大小的因數(shù)的情況),Baker map的密鑰空間最大僅為2N-1(N為圖像的寬),而新映射的密鑰空間只和密鑰本身長(zhǎng)度和改進(jìn)的Logistic映射有關(guān)。只要計(jì)算速度允許,密鑰長(zhǎng)度沒(méi)有限制。
②對(duì)密鑰變化更加敏感。新映射只要密鑰稍有變化,密圖就會(huì)截然不同。因此,用相似但不相同的密鑰無(wú)法對(duì)密圖解密。而使用相似的密鑰也可以對(duì)Baker?map加密密圖進(jìn)行解密。
③改變圖像的像素值,由圖5,圖7,圖9,圖11可知,本算法可以改變?cè)瓐D像的直方圖,即本加密算法可以改變圖像的像素值,這樣可以有效的隱藏直方圖信息,從而抵御己知(選擇)明文攻擊,提高加密算法的安全性。
六、基于三維空間下的圖像加密算法優(yōu)點(diǎn)
本文提出了一種基于三維空間下的圖像加密算法,算法具有如下優(yōu)點(diǎn):
①公式非常簡(jiǎn)單,容易編程實(shí)現(xiàn)。
②映射是可逆的。
③在加密/解密過(guò)程中沒(méi)有信息損失。
④加密的密鑰基本沒(méi)有限制。
⑤密圖和原圖大小一致,沒(méi)有大小差異。
⑥能滿足實(shí)時(shí)需要,適合大尺寸圖像文件加密。
⑦經(jīng)過(guò)映射后,可以改變?cè)瓐D像的直方圖。
⑧加密算法簡(jiǎn)單,容易硬件實(shí)現(xiàn)。
?小知識(shí)之三維空間
三維空間,也稱為三次元、3D,日常生活中可指由長(zhǎng)、寬、高三個(gè)維度所構(gòu)成的空間。而且日常生活中使用的“三維空間” 一詞,常常是指三維的歐幾里得空間。









