郁闷天天有,今天特别多。。。望牛人来解惑~
对字符串xor加密的几点疑惑。。详细问题见程序注释Option Explicit
Option Base 1
Private Sub set_Click()
Dim arr()
Dim i As Long, k As Long
Dim ss As String, txts As String
If Len(Text1.Text) = 0 Then Exit Sub ' 检测文本框
ss = "d:\arr.txt" '加密字符存放的文件
If Dir(ss) <> "" Then Kill ss '如果加密文件存在就删除
txts = Text1.Text
k = Len(txts)
For i = 1 To k
ReDim Preserve arr(i)
arr(i) = Mid$(txts, i, 1)
arr(i) = Asc(arr(i)) Xor 256 '取出字符串,进行简单的异或
Next
Open ss For Binary As #1
Put #1, , arr() '把加密后的字符串写入文件????《1》为什么:加密文件大小= (字符串大小)x4+4
Close #1
MsgBox " yes!"
ReDim arr(1)
End Sub
Private Sub get_Click()
Dim arr(), brr()
Dim i As Long, k As Long
Dim ss As String, sss As String
ss = "d:\brr.txt"
sss = "d:\arr.txt"
If Dir(sss) = "" Then Exit Sub
If Dir(ss) <> "" Then Kill ss
k = FileLen("d:\arr.txt")
Open sss For Binary As #2
ReDim Preserve arr(k)
Get #2, , arr() '取出文件中的数据
Close #2
For i = 1 To UBound(arr)
ReDim Preserve brr(i)
arr(i) = arr(i) Xor 256 '对数据解密
brr(i) = Chr(arr(i)) '转换为字符
Next
Open ss For Binary As #3 '《2》中文的字符都能解密,但是E文有些反而不能,为什么???
Put #3, , brr() ' 如果加密为全中文,解密文件大小=加密文件x5+17字节
Close #3 '《3》如果加密为全英文,解密文件大小=加密文件x5 ????这又是为什么?
MsgBox "yes!"
ReDim arr(1): ReDim brr(1)
End Sub