李驍一
(大連東軟 信息學(xué)院,遼寧 大連 116023)
我們知道隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡(luò)信息的傳輸在人們的日常生活中變得越來越重要。隨之而來的是信息傳輸?shù)陌踩珕栴}也就越來越引起人們的關(guān)注,特別是對于普通的互聯(lián)網(wǎng)用戶其信息的安全一直沒有一種簡單可行的保護(hù)方法。
小波分析是建立在泛函分析,調(diào)和分析、傅里葉分析基礎(chǔ)上的時頻原子。其理論和方法在信號處理、數(shù)據(jù)壓縮、圖像處理[1]285-287,[2]32-34等方面有著廣泛的應(yīng)用。針對上述問題,本文提出利用小波分析及水印技術(shù)的相關(guān)知識來探討將文本信息加密嵌入相應(yīng)的信息載體中進(jìn)行傳輸,從而對所要傳輸?shù)奈谋酒鸬诫[藏保護(hù)作用。
小波分解[3]35-38,[4]19-21方法是一種窗口大?。创翱诿娣e)固定,但其形狀可改變,時間窗和頻率窗都可改變的時頻局域化分析方法,即在低頻部分具有較高的頻率分辨率和較低的時間分辨率,在高頻部分具有較高的時間分辨率和較低的頻率分辨率,所以被稱為“數(shù)學(xué)顯微鏡”。正是這種特性,使小波變換具有對信號的自適應(yīng)性。
小波變換可以同時在時域和頻域上分析信號的局部特性。平方可積函數(shù)f(t)∈L2(R)的連續(xù)小波變換定義為:
在本文中,主要用到的是 Matlab中小波工具箱的二維離散部分。我們只給出這里用的兩個函數(shù) dwt2和idwt2[7][8]做簡單的介紹:
函數(shù)功能:二維單尺度小波變換
語法格式:(1)[cA,cH,cV,cD]=dwt2(X,‘wname’);(2)[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)使用說明:dwt2使用指定的小波(‘wname’)或者分解濾波器(Lo_D,Hi_D)進(jìn)行二維單尺度小波分解。
格式(1)根據(jù)輸入矩陣X進(jìn)行小波分解,計算低頻矩陣cA和高頻系數(shù)矩陣cH(水平方向)、cV(垂直方向)、cD(對角方向);
格式(2)基于指定的小波分解濾波器計算二維小波分解系數(shù)。其中,Lo_D是分解低頻濾波器, Hi_D是分解高頻濾波器。Lo_D和Hi_D必須具有相同的長度。
函數(shù)說明:對于圖像分解,其算法類似于一維分解比較。二維小波函數(shù)和尺度函數(shù)算法是通過一維小波函數(shù)和尺度函數(shù)的張量積得到的。二維離散小波變換是尺度j的低頻系數(shù)分解為4個部分:尺度j-1的低頻部分,以及水平、垂直、對角等3個方向的高頻部分。
函數(shù)功能:二維單尺度小波逆換。
語法格式:(1)X= idwt2(cA,cH,cV,cD,‘wname’);
(2)X=idwt2(cA,cH,cV,cD, Lo_R,Hi_R);
(3)X=idwt2(cA,cH,cV,cD,‘wname’,s);
(4)X=idwt2(cA,cH,cV,cD, Lo_R,Hi_R,s)
使用說明:idwt2命令使用給定的小波(‘wname’)或者小波重構(gòu)濾波器(Lo_R和Hi_R)進(jìn)行單尺度二維小波重構(gòu)。
格式(1)使用小波‘wname’,基于低頻矩陣cA和高頻水平方向矩陣cH,垂直向矩陣cV和對角矩陣cD,計算單尺度重構(gòu)低頻系數(shù)矩陣X;
格式(2)使用的是指定濾波器。Lo_R是重構(gòu)低通濾波器,Hi_R是重構(gòu)高通濾波器;
格式(3)和(4)使用語法idwt2(cA,cH,cV,cD,‘wname’)返回尺度s的中間部分。
本文是利用上述兩個二維離散分解合成函數(shù)以及turn5工具和相應(yīng)的嵌入算法來完成相應(yīng)的加密和解密工作。
水印的基本原理和算法通用的水印技術(shù)[9]包含兩個方面:水印的嵌入和水印的提取或檢測(圖1和圖2所示)
圖1 水印信號嵌入
圖2 水印信號提取
而我們提出的文本加密嵌入的基本原理和算法,和上述方法類似就是將文本轉(zhuǎn)化為相應(yīng)的矩陣信息嵌入某個信息載體,將此信息載體連同文本信息一同傳輸來達(dá)到隱蔽的目的。
Turn5是一數(shù)據(jù)以及字符轉(zhuǎn)換工具,其功能有進(jìn)制轉(zhuǎn)換、字符轉(zhuǎn)換、邏輯運(yùn)算等幾種在計算機(jī)運(yùn)算中較為常見的轉(zhuǎn)化。
圖3 文本信息轉(zhuǎn)化為數(shù)值信息
圖3是turn5將文本信息轉(zhuǎn)化為數(shù)值信息的過程,先在字符轉(zhuǎn)換工具中文本轉(zhuǎn)化為十六進(jìn)制字符,然后在進(jìn)制轉(zhuǎn)換工具中將十六進(jìn)制字符轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)。
圖4是圖3的逆過程是把在圖像中分離出的二進(jìn)制信息,在turn5中轉(zhuǎn)化為文本信息。
所謂的文本的信息加密,就是將文本信息轉(zhuǎn)化為我們能夠處理的數(shù)值信息。在這里我們借助于 turn5這個字符進(jìn)制轉(zhuǎn)換工具,由于Matlab是對矩陣進(jìn)行處理運(yùn)算的,所以我們首先將文本信息在turn5中轉(zhuǎn)化并寫成一個純數(shù)值的文本,然后用Matlab中的fopen,fscanf函讀取并寫成矩陣嵌入圖像高頻信息矩陣中,經(jīng)加密處理后重構(gòu)圖像,從而隱藏文本信息。
第一種加密及解密方法:其具體加密步驟如下:
(1)第一步:將文本信息在turn5中轉(zhuǎn)化為二進(jìn)制數(shù)值信息;目的是為了在Matlab中使用函數(shù)fopen,fscanf讀成矩陣后便于處理。
(2)第二步:用dwt2函數(shù)對圖像做小波分解變換,分離出圖像中的高頻矩陣。為將要嵌入的二進(jìn)制數(shù)值信息數(shù)據(jù)提供存儲空間。
(3)第三步:將第一步轉(zhuǎn)化的文本信息嵌入到高頻矩陣中。
圖4 數(shù)值信息轉(zhuǎn)化為文本信息
(4)第四步:對嵌入信息后矩陣做任意形式的調(diào)整,如交換行列、轉(zhuǎn)置等。從而打亂原有文本信息的秩序,達(dá)到加密的目的。
(5)第五步:用idwt函數(shù)對含有文本信息的圖像進(jìn)行重構(gòu)。
信息提取是將含有文本信息的圖像進(jìn)行小波分解變換,分離出相應(yīng)得文本信息,通過解密程序以及 fopen,fprint函數(shù)寫成純數(shù)值文本,借助turn5工具轉(zhuǎn)化為文字文本。
具體解密步驟如下:
(1) 第一步:用dwt2函數(shù)對含有文本信息的圖像進(jìn)行小波分解,分離出含有文本信息的高頻系數(shù),以便對文本信息的讀取。
(2)第二步:用相應(yīng)程序?qū)Ψ蛛x出的高頻信息矩陣進(jìn)行解密處理。
(3)第三步:對嵌入的二進(jìn)制文本信息進(jìn)行精確分離。還原原來的文本信息矩陣。
(4)第四步:用Matlab中的fopen ,fprint函數(shù)將分離出的文本信息矩陣寫成只含有數(shù)值文本。
(5)第五步:借助 turu5轉(zhuǎn)換工具將數(shù)值文本轉(zhuǎn)化為所傳輸?shù)奈谋尽?/p>
例如圖5:
圖5 第一種加密方法
圖5是對圖3所顯示的文本信息嵌入后的兩圖像之間的對比。原始圖像是未嵌入信息的圖像,嵌入文本信息圖像是嵌入文本信息后要傳輸?shù)膱D像。
詳細(xì)的嵌入加密程序以及分離解密程序見附錄程序1。
第二種加密方法:和第一種方法類似只是在將文本信息轉(zhuǎn)化十六進(jìn)制的符號文本信息后用。其優(yōu)點(diǎn)是在傳輸中隱藏的信息量是第一種的四倍,在讀取這個數(shù)值文本信息時用的Matlab函數(shù)是fopen和fread,而在逆轉(zhuǎn)換過程中只需將fprint函數(shù)稍做調(diào)整即可。
圖6 第二種方法加密
用第二種方法加密原始圖像的信息具體程序見附錄程序2。圖6是經(jīng)第二種方法加密后的圖像對比??芍漭^第一種加密方法的圖像有些粗糙。
本文提出的是基于小波變換的在圖像中嵌入文本加密信息的隱蔽方法,此方法的優(yōu)點(diǎn)是(1)由于文本信息隱蔽于能量較低高頻系數(shù)之中,所以在視覺效果圖像幾乎沒有什么改變。(2)不同于水印技術(shù)的繁瑣算法和閾值的選取,相對簡單便于操作。(3)對于圖像的選取沒有什么特別的要求。不足之處是傳遞的信息量受圖像信息量的影響,抗干擾能力不是很強(qiáng)。所以較適合普通互連網(wǎng)用戶的文本隱蔽傳輸中的應(yīng)用。
附錄:
程序1
clear
%裝入原圖像1
load woman;
I=X;
%小波函數(shù)
type='db1';
%2維離散Daubechies小波變換
[CA1,CH1,CV1,CD1]=dwt2(I,type);
C1=[CH1 CV1 CD1];
%系數(shù)矩陣大小
[length1,width1]=size(CA1);
[M1,N1]=size(C1);
%圖像中加入文本信息
fid=fopen('shaokun.txt');
A=fscanf(fid,'%1d');
N=length(A);
k=1;
for counter1=1:1:M1
for counter2=1:1:N1
if (k marked1(counter1,counter2)=A(k); else marked1(counter1,counter2)=0; end k=k+1; end end %重構(gòu)圖像 NEWCH1= marked1(1:length1,1:width1); NEWCV1= marked1(1:length1,width1+1:2*width1); NEWCD1= marked1(1:length1,2*width1+1:3*width1); Rl=double(idwt2(CA1,NEWCH1,NEWCV1,NEWCD1,type)); %兩圖像之間的差異顯示 watermark1=double(Rl)-double(I); figure(1); subplot(1,2,1) image(I); axis('square'); title('原始圖像'); subplot(1,2,2); imshow(Rl/250); axis('square'); title('嵌入文本信息后的圖像'); figure(3); imshow(watermark1*10^16); axis('square'); title('差異圖'); fclose(fid); % ------------解密過程------------- [a,b,c,d]=dwt2(Rl,type); e=floor([b,c,d]); [m,n]=size(e); s=1; for i=1:m for j=1:n if(s g(s)=e(i,j); s=s+1; end end end fid2=fopen('juzhen.txt','wb'); count=fprintf(fid2,'%1d',g); fclose(fid2); 程序2 clear %裝入原圖像1 load woman; I=X; %小波函數(shù) type='db1'; %2維離散Daubechies小波變換 [CA1,CH1,CV1,CD1]=dwt2(I,type); C1=[CH1 CV1 CD1]; %系數(shù)矩陣大小 [length1,width1]=size(CA1); [M1,N1]=size(C1); %圖像中加入水印 fid=fopen('shaokun.txt'); A=fread(fid); N=length(A); k=1; for counter1=1:1:M1 for counter2=1:1:N1 if (A(k)≠N) marked1(counter1,counter2)=A(k) else marked1(counter1,counter2)=0; end k=k+1; end end %重構(gòu)圖像 NEWCH1= marked1(1:length1,1:width1); NEWCV1= marked1(1:length1,width1+1:2*width1); NEWCD1= marked1(1:length1,2*width1+1:3*width1); Rl=double(idwt2(CA1,NEWCH1,NEWCV1,NEWCD1,type)); %分離水印 watermark1=double(Rl)-double(I); figure(1); subplot(1,2,1); image(I); axis('square'); title('原始圖像'); subplot(1,2,2); imshow(Rl/250); axis('square'); title('嵌入文本信息后的圖像'); figure(2); imshow(watermark1*10^16); axis('square'); title('差異圖'); fclose(fid); [1]孫崟培,王朝英.小波分析和小波包在圖像消噪中的應(yīng)用[J].通信技術(shù),2009,(1). [2]田苗苗.小波分析和小波包在圖像壓縮中的應(yīng)用[J].安徽科技學(xué)院學(xué)報,2009,23(5). [3]呂金花.基于MATLAB的圖像壓縮技術(shù)研究[J].山西焦煤科技,2008,(12). [4]范秋鳳,翟亞芳,周偉東.基于小波和小波包圖像去噪的比較研究[J].信息技術(shù),2007,(11). [5]C.Sidney Burrus, Ramesh A.Gopinath.Introduction to wavelets and wavelet transforms: a primer(英文版)[M].北京:機(jī)械工業(yè)出版社,2005. [6]原培新,孫麗娜,林杰,袁圣浩.基于小波變換的引擎故障診斷方法研究[J].機(jī)械科學(xué)與技術(shù),2006. [7]郭晶,孫偉娟.小波分析理論與MATLAB7實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2005. [8]胡昌華,張軍波,夏軍,張偉.基于MATLAB的系統(tǒng)分析與設(shè)計——小波分析[M].西安:西安電子科技大學(xué)出版社,2000. [9]戴軍.一種基于小波變換和RC6的信息隱藏算法[J].信息安全與通信保密,2006,(10).