VBA語言是針對微軟Office文檔進行操作的語言,它可以對Office文檔的各種操作進行編程。下面給出該方法的VBA實現算法和程序的主要流程。
Sub Hide() '以下是實現信息隱藏的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 '每次循環隱藏壹位二進制位'
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變量中的每壹個二進制位利用位運算分別取出來,以設置文檔中被選中的兩個字符的間距
Next i
End Sub
上述Hide宏實現了在Word文檔中隱藏壹個8位的二進制串(即壹個英文字符),若需要隱藏壹個字符串,則只需重復上述過程。
下面是從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
'每次循環提取出壹個被隱藏的二進制位
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
'將提取出的壹每個二進制位利用位運算形成壹個8位二進制串(即壹個字符)
Next i
MsgBox (CStrl(Chr(ch)))
'利用對話框顯示所提取的信息。
End Sub
上述算法給出在文檔中確定位置的隱藏和提取,在實際應用也可以采用非確定的位置,如按照文件中某些特征確定隱藏位置,也可以將隱藏的位置分散到文檔中的不同位置。該方法對於信息的隱藏量是比較高的,若壹篇文檔有5001個字符,則最多可隱藏5000個二進制位。另外,也可以采用間距變化分別為0磅、0.1磅、0.2磅與0.3磅實現四進制數位的隱藏,但這樣會加大字符間距變化的幅度,可能會引起懷疑。該方法的缺點是在文檔進行重新排版時,所隱藏的信息會丟失或產生錯誤;也正是由於這個特性,可以利用它實現Word文檔中的數字水印,起到壹定的產權保護作用。