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
|