国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于一階貝塞爾曲線的信息隱藏軟件的設(shè)計

2015-07-13 12:40吳琦
電腦知識與技術(shù) 2015年13期

吳琦

摘要:該文探討了基于一階貝塞爾曲線的信息融合算法,并在理論上證明了該算法的可用性;同時對該算法的相應(yīng)部分進(jìn)行了改進(jìn),并編程實現(xiàn)了載體圖像文件對信息的隱藏和恢復(fù)功能;通過測試與分析,所開發(fā)的軟件可以無損地對數(shù)據(jù)流信息進(jìn)行隱藏和恢復(fù)。

關(guān)鍵詞:信息隱藏技術(shù);圖像空域;一階貝塞爾曲線;隱藏比例;位圖

中圖分類號:TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)13-0112-02

Abstract: This paper focuses on the fusion algorithm based on the information of first order Bessel curve, and proves the availability of the algorithm in theory; secondly, the corresponding part of the algorithm is improved, and the programming of information hiding and restore function; finally, through the test and analysis, the development the software can be non-destructive to the data flow information hiding and recovering.

Key words: Information hiding; image; the first order Bessel curve; hidden proportion; bitmap

1 基于一階貝塞爾曲線的信息隱藏軟件的需求分析

通過對24位BMP位圖文件的空域研究,并且運用一階貝塞爾曲線算法,在程序上實現(xiàn)了對機(jī)密信息的隱藏和恢復(fù)的功能。在算法的原有基礎(chǔ)上,首先進(jìn)行了對嵌入算法和恢復(fù)算法兩大模塊的程序改進(jìn),使其對組幀過程中微小的差錯進(jìn)行嚴(yán)格的檢驗。并且在理論上運用數(shù)學(xué)基礎(chǔ)確定了算法中起關(guān)鍵作用的相關(guān)參數(shù),使得最終隱藏比率達(dá)到3/8,即宿主文件可容納占其大小3/8的機(jī)密信息,同時保證融合后宿主文件的大小、類型、形態(tài)不變,同時隱藏信息能夠成功的恢復(fù)出來。因此通過本軟件的使用,更有效的加大了信息隱藏的數(shù)據(jù)量,而且進(jìn)一步確保了重要信息的安全性,將其安全的融合到24位BMP位圖文件中,提高其保密程度。

2 基于一階貝塞爾曲線的信息隱藏軟件的設(shè)計方案

2.1 對明文組幀

核心算法的理論證明是正確和有效的,通過對其實現(xiàn)過程,以及測試實際應(yīng)用效果的算法。包括兩個模塊:提取文件和文件。在秘密檔案(明文)隱藏到位圖文件(主機(jī)信息)時,首先通過CFile類打開()函數(shù),它的內(nèi)容讀入內(nèi)存,和信息的秘密文件,如文件名,文件訪問為了提取文件的長度也可提取的信息存儲在隱藏狀態(tài)的位圖。因為文件名不允許“*”,它可以作為一個單獨的文件的信息符號,通過一定的數(shù)據(jù)幀格式:

//對明文進(jìn)行組幀

for(int k=0;k

HideData[k]=InfoHead.GetAt(k);

HideFile.Read(HideData+HeadLen,HideFileLen); //文件內(nèi)容

for (DWORD kk=HeadLen+HideFileLen;kk

HideData[kk]=0; //空余內(nèi)容以0填充

2.2嵌入算法

組幀完畢后,根據(jù)T = 0.035、L = 3算法進(jìn)行信息流的融合處理。因為它是一個8位的圖像信息隱藏3比特的秘密文件的信息,所以最小公倍數(shù)24位(3字節(jié))為一個周期。比特流劃分可用比特和移位運算來實現(xiàn),三字節(jié)的掩模的秘密文件是在[ 224,28,3 ]命令,[ 128112,14,1 ],[ 192,56,7 ],應(yīng)相應(yīng)的移位操作。本代碼是核心代碼隱藏文件,直接反映了該算法的中心思想:

for(DWORD i=54;i

{Temp=((HideData[j]&224)>>5)<<5; //第一個“3比特”構(gòu)成圖像的第一字節(jié)

BaseData[i]=HideCalculate(BaseData[i],Temp); //進(jìn)行兩文件融合計算

i++; //修正宿主信息當(dāng)前指針(字節(jié)為單位)

Temp=((HideData[j]&28)>>2)<<5; //第二個“3比特”構(gòu)成圖像的第二字節(jié)

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=(HideData[j]&3)<<1; //第三個“3比特”

j++; //修正隱藏信息當(dāng)前指針(字節(jié)為單位)

Temp|=(HideData[j]&128)>>7;

Temp*=32;

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=((HideData[j]&112)>>4)<<5; //第四個“3比特”

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=((HideData[j]&14)>>1)<<5; //第五個“3比特”

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=(HideData[j]&1)<<2; //第六個“3比特”

j++;

Temp|=(HideData[j]&192)>>6;

Temp*=32;

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=((HideData[j]&56)>>3)<<5; //第七個“3比特”

BaseData[i]=HideCalculate(BaseData[i],Temp);

i++;

Temp=(HideData[j]&7)<<5; //第八個“3比特”

BaseData[i]=HideCalculate(BaseData[i],Temp);

j++;}

其中,在無符號字符hidecalculate計算圖像融合(unsigned char、unsigned char B,H)功能來完成。B參數(shù)的主機(jī)信息內(nèi)容,H是隱藏信息的內(nèi)容。在計算完成后將合并信息實現(xiàn)功能的代碼,如下:

unsigned char CDataHiderView::HideCalculate(unsigned char B, unsigned char H)

{// f2=round(f0*(1-t))+round(f1*t)

unsigned char R=(int)((1-t)*B+0.5f)+(int)(t*H+0.5f);

return R;}

2.3恢復(fù)算法

從位圖文件提取過程實際上是一個隱藏文件的逆過程。將包含一個隱藏文件的位圖和原始位圖的讀取到緩沖區(qū)中,從每個字節(jié)的信息獲取主機(jī)的3位中提取的信息,然后根據(jù)8位/字節(jié)格式由一個流的字節(jié)序列的比特流,以恢復(fù)隱藏的信息:

for(DWORD i=54;i

{Temp=(ShowCalculate(CarrierData[i],BaseData[i])&7)<<5;//提取出第一個“3比特”

i++; //宿主信息指針修正(字節(jié)為單位)

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&7)<<2; //提取出第二個“3比特”

i++;

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&6)>>1; //提取出第三個“3比特”

CarrierData[j]=Temp; //恢復(fù)出第一個隱藏字節(jié)

j++; //隱藏信息指針修正(字節(jié)為單位)

Temp=(ShowCalculate(CarrierData[i],BaseData[i])&1)<<7;

i++;

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&7)<<4; //提取出第四個“3比特”

i++;

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&7)<<1; //提取出第五個“3比特”

i++;

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&4)>>2; //提取出第六個“3比特”

CarrierData[j]=Temp; //恢復(fù)出第二個隱藏字節(jié)

j++;

Temp=(ShowCalculate(CarrierData[i],BaseData[i])&3)<<6;

i++;

Temp|=(ShowCalculate(CarrierData[i],BaseData[i])&7)<<3; //提取出第七個“3比特”

i++;

Temp|=ShowCalculate(CarrierData[i],BaseData[i])&7; //提取出第八個“3比特”

CarrierData[j]=Temp; //恢復(fù)出第三個隱藏字節(jié)

j++;}

這是恢復(fù)和糾錯信息的主要工作是在unsigned char showcalculate(unsigned char、unsigned char c,b)功能來完成。為主機(jī)信息內(nèi)容C參數(shù),參數(shù)的原始信息內(nèi)容,返回值是3位隱藏信息(未轉(zhuǎn)移):

unsigned char CDataHiderView::ShowCalculate(unsigned char C, unsigned char B)

{// rf1=round((f2-round((1-t)*f0))/t)

unsigned char R=(int)((C- (int)((1-t)*B+0.5f))/t+0.5f);

if(R%32>15) //誤差修正(自動糾錯)

R+=15;

R=(int)(R/32.0f+0.5f);

return R;}

經(jīng)過以上處理,文件的信息和內(nèi)容可以被隱藏的文件恢復(fù)從主機(jī)內(nèi)存位圖剩下的工作,不僅要恢復(fù)的文件頭格式文件的相關(guān)信息進(jìn)行提取,然后將文件內(nèi)容保存到磁盤完成任何二進(jìn)制文件。

3 基于一階貝塞爾曲線的信息隱藏軟件的實現(xiàn)

3.1基本步驟

軟件的實現(xiàn)主要為宿主文件的正確選取,待隱藏文件的正確選取,融合過程的成功進(jìn)行,融合后文件的正確選取,恢復(fù)過程的成功進(jìn)行五部分。實現(xiàn)步驟如圖1,而其間各種程序的實現(xiàn)也同步進(jìn)行。首先選擇非空BMP位圖文件作為宿主文件,因為此軟件所選定的宿主文件類型僅為24位BMP位圖文件,而大小為0kb的文件不能作為宿主文件使用,同時軟件也會提示宿主文件選取錯誤;當(dāng)選取待隱藏文件時,各種文件類型均可選取,如.txt文本文件類型、.exe執(zhí)行文件類型以及各種圖像文件類型。若選取的文件過大,超過宿主文件大小的3/8,軟件在融合步驟將會提示待隱藏文件大小過大。因此本軟件更適合隱藏容量較小的圖像文件和文本文件;融合過程的成功進(jìn)行取決于融合系數(shù)的選擇,組幀部分的實現(xiàn)如圖2所示,融合過程的成功進(jìn)行取決于融合系數(shù)的選擇,組幀完畢后將按照參數(shù)t=0.035、L=3對組幀后的信息進(jìn)行融合。一般情況下,融合系數(shù)和串長參數(shù)在軟件原有程序中已確定。融合時,軟件提示融合后文件的儲存地址,在此要注意為融合后的文件作標(biāo)記,并確定路徑;恢復(fù)文件時,必須正確選取融合后的文件,否則軟件會提示選取文件有誤?;謴?fù)過程是融合過程的逆過程,按照組幀信息,確保機(jī)密文件的完整性和正確性。同時軟件會提示機(jī)密文件的儲存位置。

3.2錯誤判斷

當(dāng)在進(jìn)行數(shù)據(jù)隱藏及恢復(fù)過程中,難免會發(fā)生一些錯誤。對于相應(yīng)錯誤,軟件經(jīng)過判斷,都會給出相應(yīng)的錯誤提示框,告訴用戶正確的操作。

當(dāng)選擇宿主文件時,假如選擇的宿主文件不為BMP文件,軟件會提示“宿主文件格式錯誤”;即使是BMP文件格式,但并非24位,軟件將會提示“位圖文件應(yīng)為24位”;而當(dāng)選擇了字節(jié)為0kb的24位BMP文件時,提示為“此文件不能用于隱藏數(shù)據(jù)”。

待隱藏文件選擇后,當(dāng)點擊嵌入數(shù)據(jù)按鈕時,程序會自動判斷待隱藏文件大小是否小于或等于宿主文件大小的3/8,若大于宿主文件大小的3/8時,軟件會提示“隱藏文件過大”;而當(dāng)恢復(fù)機(jī)密文件時,軟件首先會判斷所選文件是否為隱藏有機(jī)密文件的融和文件,若不是即提示“所選文件非融和文件”;假如融合文件被他人破壞,使文件標(biāo)頭組幀受到影響,導(dǎo)致文件無法恢復(fù),軟件會提示“文件被破壞無法恢復(fù)”。

3.3測試與分析

以491×363大小的24位BMP圖像作為原始圖像進(jìn)行實驗。在t=0.035、L=3時理論最大隱藏數(shù)為491×363×3×3/8=200,512字節(jié)。占位圖大小536,576字節(jié)的37.368%,約為宿主圖像大小的原始圖像含有隱含文件的圖像3/8。在一個大小為4,096的文本文件隱藏實驗,隱藏位圖的大小是536,576字節(jié),然后從中恢復(fù)的成功的位圖,并正常運行。實驗結(jié)果表明,該隱藏算法的一階Bézier曲線上的信息是正確和可行的,并可以實現(xiàn)位圖位圖,文本信息隱藏與恢復(fù)的位圖文件類型。

4 結(jié)束語

在本文中,通過對24位BMP文件格式的認(rèn)識,和基于一階貝塞爾曲線的圖像隱藏算法,二進(jìn)制文件的隱藏,可以恢復(fù)正確的。此外,該算法的可靠性進(jìn)行了理論上證明,然后通過軟件測試分析,驗證了算法的正確性。該算法可以隱藏容量。該算法可以隱藏容量高達(dá)3 / 8主機(jī)信息的能力,因此它是非常適合和保密的文件隱藏。該算法的信息隱藏軟件,信息隱藏和恢復(fù)可以成功的將小于或等于主文件3 / 8的規(guī)模,預(yù)計將達(dá)到最優(yōu)的結(jié)果。

參考文獻(xiàn):

[1] 肖詩勤,楊關(guān)良.一種改進(jìn)的魚眼圖像輪廓提取算法[J]. 計算機(jī)與數(shù)字工程,2010(1).

[2] 王慧琴.數(shù)字圖像處理[M].北京:北京郵電大學(xué)出版社,2006.

[3] 畢萍.圖像分類方法的對比研究[J]. 現(xiàn)代電子技術(shù),2009(18).

[4] 張杰,郭小川,金城,等.基于特征互補(bǔ)率矩陣的圖像分類方法[J]. 計算機(jī)工程,2011(4).

[6] 楊淑瑩. VC++圖像處理程序設(shè)計[M].北京:北京交通大學(xué)出版社,2010.