VB文件IO遇到了问题!急!

来源:百度知道 编辑:UC知道 时间:2024/09/25 07:29:59
我写了一个对用户输入的密码进行简单加密的程序,原理就是将用户输入的密码转换为ASCII码,并存到“密码.txt”文件里,然后获取密码的时候读取这个文件,再转为文本。可是遇到了一个令人不解的问题,请看代码:

Private Sub SavePassword()
Dim size As Integer
Dim i As Integer
Dim p() As Long
Dim filename As String
filename = App.Path + "\密码.txt"

size = Len(Text1.Text)

ReDim p(size)

For i = 1 To size
p(i) = Asc(Mid(Text1.Text, i, 1))
Next i

Open filename For Binary As #1
Put #1, 1, p
Close #1
End Sub

上面是保存密码的代码,没有问题。可是下面的获取密码的函数就有问题了,请看(函数有两个版本):

Private Function GetPassword() As String
Dim size As Integer
Dim i As Integer
Dim p() As Integer

Dim SResult As String
SResult = ""

size = FileLen(App.Path + "\密码.txt")
ReDim p(size)

Dim filename As String
filename = App.Path + "\密码.txt"
Open filename For Binary Access Read As #1
Get #1, 1, p
Close #

if p(i)<>0 then SResult = SResult + Chr(p(i))

'给你另外写了个,比你原先做的可能会好点
Function GetPassWord() As String '解密
Dim strPW As String
filename = App.Path + "\密码.txt"
Open filename For Input As #1
Input #1, x
Close #1
ReDim p(Len(x) / 2, 2)
For i = 1 To Len(x) Step 2
GetPassWord= GetPassWord & Chr(Asc(Mid(x, i, 1)) Xor Asc(Mid(x, i + 1, 1)))
Next i
End Function
Sub PutPassWord(x As String) '加密
Dim strKey As String
Dim i As Integer
Dim p() As String
Dim strRel As String
Randomize
ReDim p(Len(x), 2)
For i = 1 To Len(x)
p(i, 0) = Mid(x, i, 1): p(i, 1) = Chr(Int(Rnd * 26 + 48))
strRel = strRel & Chr(Asc(p(i, 0)) Xor Asc(p(i, 1))) & p(i, 1)
Next i
filename =App.Path + "\密码.txt"