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

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

第2步就是把在IJ平面上第二,三,N行的對應的平行于K軸平面依次添加到第一行的平行于K軸的平面后面,這樣三維矩陣就轉化成為了一個的二維矩陣,如圖3所示。

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

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

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

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

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








