加密信息隱藏技術之DCT系數(shù)的應用

信息化技術高度進步的今天,傳統(tǒng)的安全技術已顯得捉襟見肘,而信息隱藏技術作為一門新興的技術,因其安全性程度高而顯示了廣闊的應用前景?;谛畔㈦[藏算法并結合密碼技術設計并實現(xiàn)了一個可行的信息隱藏系統(tǒng),基本實現(xiàn)了隱藏信息的嵌入和提取,平均相似度達到91. 42%;在隱藏信息嵌入前,對隱藏信息進行加密,在接收端加入解密程序,從源頭上消除了隱藏信息在傳輸過程中被惡意破解的隱患。保證了隱藏信息的安全性,從而也保證了載體信息的安全性。

一、DES算法

DES算法又稱為美國數(shù)據(jù)加密標準。DES算法把64位的明文經(jīng)過一系列的變換轉為64位的密文輸出,其密鑰也是64位,其算法主要分為兩步:

(1)初始置換其功能是把初始置換后把64位明文平均分成左右兩部分(L,R),每部分各為32位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,輸出LO、RO兩部分。

(2)逆置換將L16、R16作為輸入部分,進行逆置換,得到密文并輸出。

二、基于DCT系數(shù)的加密信息隱藏算法

本文在隱藏之前先對圖像進行離散余弦變化,得到DCT系數(shù),然后將隱藏信息經(jīng)過DES算法加密,將密文信息嵌入到DCT系數(shù)的最高位,在保持LSB方法的優(yōu)點的同時,進一步提高算法的抗干擾性。其具體過程如下:

(1)讀人待隱藏信息并將其轉化為ASCII碼形式存儲;

(2)將待隱藏信息的ASCII碼進行加密處理得到密文(假設為N位);

(3)獲取原始圖像的RGB值;

(4)對圖像進行離散余弦變化,得到DCT系數(shù);

1

(5)按照公式w=W'/(1+a Xx)將信息嵌入到待隱藏圖像中,其中w'為隱藏后圖像的DCT系數(shù),w為待隱藏圖像的DCT系數(shù),a為嵌入?yún)?shù),x則為隱藏信息;

(6)將得到的DCT系數(shù)進行逆DCT變換,得到隱藏信息后的圖像,即完成信息隱藏。逆DCT變換公式為:

1

三、DES加密算法核心編程

public 8tatic byte[ l decryptMode( byte[ j keybyte, byte[ ] src)

SecretKey Skey - new SecretKeySpec( keybyte, Alg) ;

Cipher cl= Cipher, t;etlnstance( AIS) ;

cl , init( Cipher. DECRYPT_MODE , deskey)

retum cl. doFirud ( src ) ;

catch (java. security. NoSuchAlgorithmException el

el. pnntStackTrace( ) ;

catch (javax. crypto. NoSuchPaddingException e2)

e2. printStackTrace( ) ;

catch (java. lang. Exception c3)

e3. printStackTrace( )i ;

retum null;

public static String byte2hex( byte[ ] a)

String hh = i' " ,

String stp = " " ;

for (.int n = O;n< a. length;n ++ )

atm p = (java. lang. Integer. toHexString( a[ n] & OXFF));

if ( stmp. length( ) ==1)

hh = hh + "0" + stp;

else hh = hh + stp;

if ( n< a. length - l) hh = hh + ii : il ';.

retum hh. toUpperCase( ) ; .

public static void main( String[ ] args)

Security. addProvider( new conL sun. crypto. provider. SunjCE( ));

final byte[ J keyBytes = /Oxll, Ox22, Ox4F, Ox58, (byte)

Ox88, Oxl0, Ox40, Ox38, Ox28 , Ox25 , Ox79, Ox51, ( byte)

OxCB , ( byte)OxDD, Ox55, Ox66, Ox77 , Ox29 , Ox74 , ( byte )

Ox98, Ox30, Ox40, Ox36, ( byie)OxE24 t //24字節(jié)的密鑰

String szSrc = " DES encryption!",,

String szSrc=”DES encryption!"

System. out. println(”加密前的字符串i”+szSrc);

byte[]encoded - encryptMode( keyBytes, szSrc. getByLes(l));

SyBtem. out. pnntln(”加密后的字符串:”new String( encoded));

byte[]srcBytes芎decryptMode( keyBytes. encoded);

System out. pnntln(”解密后的字符串:”(new Stnng(srcBytes)));

四、系統(tǒng)實驗與分析

本文所開發(fā)的系統(tǒng),經(jīng)過多次測試,均達到了預期效果。下面僅以圖2的圖像文件為例說明其實驗效果,嵌入隱藏信息圖像和原始圖像的相似度達到了90.13%。由圖3可見,人類的視覺系統(tǒng)很難感知出隱藏前、后的圖像間的差異。

1

為了進一步體現(xiàn)實驗的效果,本文對隱藏信息前、后的圖像特征的以下幾個最重要的性能指標進行比對試驗;

(1)峰值信噪比PSNR

常用來衡量嵌入隱藏信息后圖像的質(zhì)量。PSNR越大,說明偽裝圖像的失真度越低,兩幅圖像越接近口PSNR定義如下:

1

其中f(i,j)是原來的待嵌入隱藏信息圖像,f’(i,j)是嵌入信息后的圖像,M,N是圖像的尺寸。

(2)均方根誤差RMSE

它較好地反映了嵌入隱藏信息前后兩圖像的誤差。RMSE越小,表明兩幅圖像越相似,RMSE定義如下:

1

實驗中以不同的圖像作為待嵌入隱藏信息圖像,實驗結果如表1所示。

1

(3)圖像特征相對誤差

眾所周知,像素灰度是圖像各離散點量測幅度的樣本值,是最原始、最基本的特征數(shù)據(jù)。均值表示圖像包含的平均能量,標準差表示像素灰度分布的分散程度,該值越小說明像素灰度分布越集中,越大說明像素灰度越分散。

實驗結果如表2所示。

1

表1為抽樣12幅圖像,從表1可以看出,PSNR值均超過了35db,平均值達到了68.54db。主觀感覺不易找到兩者之間的差異,且RMSE的均值也只有0.0997,說明本文的隱藏算法具有良好的隱秘性。表2為圖像信息隱藏前、后圖像特征相對誤差。從表2可以看出,該隱藏算法對圖像的視覺效果的改變是可以忽略的,這就更好地驗證了該算法的有效性。

小知識之DCT變換

DCT變換的全稱是離散余弦變換(Discrete Cosine Transform),是指將一組光強數(shù)據(jù)轉換成頻率數(shù)據(jù),以便得知強度變化的情形。