郁闷天天有,今天特别多。。。望牛人来解惑~

fankun fankun 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
对字符串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
...全文
评论 12
收藏 已收藏
分享
返回顶部
fankun
VB基础类 7,788 成员 197,583 内容