一种基于Word文档的信息隐藏方法
2008-09-28 20:21:02 来源:WEB开发网在文档中选中两个相邻的字符
With Selection.Font
ch1 = ch And m
If ch1 = m Then
.Spacing = 0.1
Else
.Spacing = 0
End If
m = m / 2
End 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.MoveDown Unit:=wdLine, Count:=2
Selection.MoveRight Unit:=wdCharacter, Count:=1
m = 128
k = 0
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
If .Spacing = 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 (CStr(Chr(ch)))
′利用对话框显示所提取的信息。
End Sub
上述算法给出在文档中确定位置的隐藏和提取,在实际应用中也可以采用非确定的位置,如按照文档中某些特征确定隐藏位置,也可以将隐藏的位置分散到文档中的不同位置。该方法对于信息的隐藏量是比较高的,若一篇文档有5001个字符,则最多可隐藏5000个二进制位。另外,也可以采用间距变化分别为0磅、0.1磅、0.2磅与0.3磅实现四进制数位的隐藏,但这样会加大字符间距变化的幅度,可能会引起怀疑。该方法的缺点是在文档进行重新排版时,所隐藏的信息会丢失或产生错误;也正是由于这个特性,可以利用它实现Word文档中的数字水印,起到一定的产权保护作用。
更多精彩
赞助商链接