一種基于Word文檔的信息隱藏方法
出處:hpy013 發(fā)布于:2007-04-28 03:48:54
摘要:根據(jù)字符間距離的變化實現(xiàn)了Word文檔中信息的隱藏,利用VBA語言編寫Word宏實現(xiàn)。
關(guān)鍵詞:信息隱藏 Word文檔 Word宏
1 文本信息隱藏
文本信息隱藏是通過改變文件模式或改變文本的某些基本特征實現(xiàn)信息嵌入的方法,它使文檔產(chǎn)生一定的變化,但是這種變化對人的視覺是不可見的。與圖像和聲音文件相比,在文本里面隱藏信息是比困難的。因為它幾乎不包含任何冗余信息,因此在文本里面隱藏信息必須尋找那些不易引起視覺感知的方法。目前在文本中主要有以下三種編碼方法[2]:
(1) 行移編碼。該技術(shù)通過垂直移動文本行的位置實現(xiàn),通常當(dāng)一行被上移或下移時,與其相鄰的兩行或其中的一行保持不動,不動的相鄰行被看作是解碼過程中的參考位置。如可以規(guī)定行上移表示“0”,下移表示“1”。根據(jù)要嵌入文本中信息的二進(jìn)制位內(nèi)容,編碼器將文本中若干個行上移或下移來隱藏信息。解碼器同樣根據(jù)文檔中相鄰行的行間距離的差別進(jìn)行信息的提取。
(2) 字移編碼。與行移編碼類似,字移編碼技術(shù)通過使文本行內(nèi)字符發(fā)生平移,即利用字間距離的變化嵌入需要隱藏的信息。采用這種方式時,相鄰字之間的距離各不相同。
(3) 特征編碼。在特征編碼方法中,觀察文本文檔并選擇一些特征量,再根據(jù)要嵌入的數(shù)據(jù)修改這些特征。特征可以是字母如b、d、h、k等中的垂直線,其長度可稍作修改以使得一般人不易發(fā)覺。相對某種給定的字體可以改變其字符高度,總有一些字母特征未作改變以幫助解碼。
本文結(jié)合字移編碼技術(shù)在Word文檔中利用VBA編程語言實現(xiàn)了信息的隱藏和提取,完成了一個編碼器和一個解碼器。
2 Word文檔中信息隱藏與提取的實現(xiàn)
在Word文檔中實現(xiàn)信息隱藏的方法是改變文檔中字符的間距離。在一篇正常的文檔中字符間距通常是標(biāo)準(zhǔn)形式,即字符間距離為0磅,也可以將某兩個字符的間距設(shè)為0.1磅。例如,或需要隱藏一個二進(jìn)制串01100101(即字符a),此時可以在Word文檔中栽個位置開始的連續(xù)9個字符的文本串,將其中的兩兩字符間距分別設(shè)為0磅、0.1磅、0.1磅、0磅、0磅、0.1磅、0磅、0.1磅,這樣實現(xiàn)信息的隱藏。提取過程與此相反,根據(jù)文檔字符間的不同間距形成被隱藏的二進(jìn)制串。
下面分析該方法的可行性。根據(jù)文獻(xiàn)[2]所述,人眼無法辨認(rèn)1/150英寸以內(nèi)的間距變化,此間距為0.16993mm,而本文所采用的0.1磅間距變化為0.05405mm,此間距變化要小于文獻(xiàn)[2]中所述的值。下面是利用該方法的實驗結(jié)果。
下一行是Word文檔中字符間距全為0磅的正常顯示樣式:
在在在在在在在在在在在在在在
下一行是在其中隱藏了01100101二進(jìn)制串的文本顯示樣子:
在在在在在在在在在在在在在在
大量的實驗結(jié)果也顯示,這樣的間距變化是人眼是幾乎無法辨認(rèn)的。
利用上述方法在Word中實現(xiàn)信息隱藏的關(guān)鍵是如何控制和提取文檔中字符的間距。本文利用VBA語言實現(xiàn)了兩個Word宏進(jìn)行信息量的隱藏和提取。
VBA語言是針對微軟Office文檔進(jìn)行操作的語言,它可以對Office文檔的各種操作進(jìn)行編程。下面給出該方法的VBA實現(xiàn)算法和程序的主要流程。
Sub Hide() '以下是實現(xiàn)信息隱藏的Word宏
Dim i As Integer
Dim ch As Byte
Dim ch1 As Byte
ch=Asc("a") ch'變量中存放需要隱藏的字符
m=128
Selection.HomeKey Unit:=wdSroty *
'將文檔中的插入點移到文檔首部
Selection.MoveDown Unit:=wdLine,Count:=2
Selection.MoveRight Unit:=wdCharacter,Count:=1
'選擇信息隱藏的位置,此處為文檔的第三者'
For i =1 To 8 '每次循環(huán)隱藏一位二進(jìn)制位'
Selection.MoveLeft Unit:=wdCharacter,Count:=1
Selection.MoveRight Unit:=wdCharacter,Count:=2
Selection.MoveRight Unit:=wdCharacter,Count:=2,
Extend:=wdExtend
在文檔中選中兩個相鄰的字符
With Selection.Font
ch1 = ch And m
If ch1 = m Then
.spacing = 0.1
Else
.Spacing = 0
End If
m = m /2
Eid With
'ch變量中的每一個二進(jìn)制位利用位運(yùn)算分別取出來,以設(shè)置文檔中被選中的兩個字符的間距
Next i
End Sub
上述Hide宏實現(xiàn)了在Word文檔中隱藏一個8位的二進(jìn)制串(即一個英文字符),若需要隱藏一個字符串,則只需重復(fù)上述過程。
下面是從Word文檔中提取被隱藏信息的宏。
Sub Get()
Dim i As Integer
Dim ch As Byte
Dim m As Byte
Dim k As Byte
ch =0
Selection.HomeKey Unit:=wdStory
Selection.HomeDown Unit:=wdLine,Count:=2
Selection.HomeRight Unit:=wdCharacter,Count:=1
'在文檔中定位到被隱藏信息的位置
m = 128
k = 0
For i =1 To 8
'每次循環(huán)提取出一個被隱藏的二進(jìn)制位
Selection.HomeLeft Unit:=wdCharacter,Count:=1
Selection.HomeRight Unit:=wdCharacter,Count:=2
Selection.HomeRight Unit:=wdCharacter,Count:=2,Extend:=wdExtend
在文檔中選中兩個相鄰的字符
With Selection.Font
If .Spacion = 0 Then
ch = ch And k
Else
ch=ch Or m
End If
k = k + m
m = m/2
End With
'將提取出的一每個二進(jìn)制位利用位運(yùn)算形成一個8位二進(jìn)制串(即一個字符)
Next i
MsgBox (CStrl(Chr(ch)))
'利用對話框顯示所提取的信息。
End Sub
上述算法給出在文檔中確定位置的隱藏和提取,在實際應(yīng)用也可以采用非確定的位置,如按照文件中某些特征確定隱藏位置,也可以將隱藏的位置分散到文檔中的不同位置。該方法對于信息的隱藏量是比較高的,若一篇文檔有5001個字符,則多可隱藏5000個二進(jìn)制位。另外,也可以采用間距變化分別為0磅、0.1磅、0.2磅與0.3磅實現(xiàn)四進(jìn)制數(shù)位的隱藏,但這樣會加大字符間距變化的幅度,可能會引起懷疑。該方法的缺點是在文檔進(jìn)行重新排版時,所隱藏的信息會丟失或產(chǎn)生錯誤;也正是由于這個特性,可以利用它實現(xiàn)Word文檔中的數(shù)字水印,起到一定的產(chǎn)權(quán)保護(hù)作用。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機(jī)技術(shù)特性與嵌入式開發(fā)實踐指南2026/1/7 10:00:02
- 單片機(jī)(MCU)與數(shù)字信號處理器(DSP)分類及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級DSP信號處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機(jī)專用SoC單片機(jī)2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類型擴(kuò)充定義2025/10/27 13:59:22









