| 
				 cheshi是自定义的过程,为了测试该BMP文件是不是包含其他的数据 
Private Sub cheshi(BMPfilename As String) 
'测试该BMP文件是不是包含其他的数据 
Open BMPfilename For Binary Access Read As #1 
  
Seek #1, 3 '第三位开始记录BMP文件的长度 
Get #1, , truefree   Close #1 
If truefree = FileLen(BMPfilename) Then '利用函数得到改文件的真实长度 
  flag = True 
 Else 
   flag = False 
  End If 
End Sub 
数据加密和隐藏开始: 
Private Sub jiami(BMPfilename As String, datafilename As String, password As String) 
lenpsw = Len(password) 
Dim count As Integer 
Dim temp As Byte 
Open BMPfilename For Binary As #1 
Open datafilename For Binary Access Read As #2 
'移动到文件尾 
Seek #1, truefree 
Do While Not EOF(1) 
Get #1, , temp 
Loop 
count = 1 
Get #2, , temp 
Do While Not EOF(2) 
'对需要隐藏的数据先和密码进行xor操作,达到初步加密效果 
temp = temp Xor Asc(Mid(password, count, 1)) 
count = (count Mod lenpsw) + 1 
Put #1, , temp 
Get #2, , temp 
Loop 
Close #2 
Close #1 
End Sub 
到此数据加密隐藏完成。 
2.解密并提取文件 
如图2所示。 
 
 
  
                           
图2 
基于判断的过程与加密过程中相识,这里不再累述,主要解密提取代码如下: 
Private Sub jiemi(BMPfilename As String, datafilename As String, password As String) 
Dim count As Integer 
Dim temp As Byte 
lenpsw = Len(password) 
Open BMPfilename For Binary Access Read As #1 
Open datafilename For Binary Access Write As #2 
count = 1 
Seek #1, truefree + 1 
Get #1, , temp 
Do While Not EOF(1) 
temp = temp Xor Asc(Mid(password, count, 1))‘再次进行xor操作,把数据还原 
count = (count Mod lenpsw) + 1 
Put #2, , temp 
Get #1, , temp 
Loop 
Close #2 
Close #1 
MsgBox "ok!" 
End Sub 
数据解密提取完成 
三、结语 
1.利用本方法加密过的数据文件,如果在解密的时候输入的密码不正确,提取出来的数据将是不可辨认的乱码,保护效果较好,实现也比较简单。 
2.本文只简单地讨论了把数据文件挂接在BMP文件的尾部,感兴趣的朋友还可以把数据拆乱分别插入到BMP文件的中间,基本方法是一样的。对加密的方法,大家也可以采用不同的方法。 
3.本方法在VB6.0+Windows XP环境下编译通过,在Windows XP环境下运行,运行效果良好。 
  
  
参考文献 
  
[1]张念鲁著.VB网络编程及应用. 高等教育出版社,2002-12-01 [2]傅瑛著.VB程序设计. 电子工业出版社,2001			
				 |