VB初学者请教:
问题一、
s = RichTextBox1.Text
t = ""
For i = 1 To Len(s)
temp = Mid$(s, i, 1)
temp = Chr(Asc(temp) Xor 23)
t = t + temp
Next i
RichTextBox1.Text = t 加密解密后在文件末尾多出了“”两个字符?
问题二:如果把密匙23攺成一个三位整数的话(如231)会出现“错误7,内存溢出”指针指在“RichTextBox1.Text = t”为何? 问题三:上面的代码如果不用RichTextBox控件,用Text控件的话,
用 Open "nero.txt" For Input As x
Do While Not EOF(x)
Line Input #x, neirong
Text1.Text = Text1.Text & neirong & vbCrLf
Loop
Close #x
读到Text中,加密解密后会出现有的字符变成“”为何? 望朋友帮忙看看~谢谢
问题一、
s = RichTextBox1.Text
t = ""
For i = 1 To Len(s)
temp = Mid$(s, i, 1)
temp = Chr(Asc(temp) Xor 23)
t = t + temp
Next i
RichTextBox1.Text = t 加密解密后在文件末尾多出了“”两个字符?
问题二:如果把密匙23攺成一个三位整数的话(如231)会出现“错误7,内存溢出”指针指在“RichTextBox1.Text = t”为何? 问题三:上面的代码如果不用RichTextBox控件,用Text控件的话,
用 Open "nero.txt" For Input As x
Do While Not EOF(x)
Line Input #x, neirong
Text1.Text = Text1.Text & neirong & vbCrLf
Loop
Close #x
读到Text中,加密解密后会出现有的字符变成“”为何? 望朋友帮忙看看~谢谢
有很大一部分是没有利用的 所以有些asc码 没有显示或者 显示"?" 问号之类的
所以你进行XOR加密后除非你再用xor还原否则不应该RichTextBox1.Text = t来显示
用txtbox显示出来不一定转换的回去...有些字符是不显示的....xor以后可能会出现0的情况,要考虑到....
加密后最好放数组..
我是用相同的代码解密的啊
to:三楼的朋友
朋友是说用二进制打开文件后存数组里面吗?我也试试,可是要加密的文件是每一行为一条记录,但每条记录都不长(不超过15个中文),加密解密出来的文件却都连在一起了,不是按行显示的了?为什么会这样啊?
Dim Char As String * 1
Open InputFile For Binary As #1
Open OutputFile For Binary As #2
For z = 1 To FileLen(InputFile)
Get 1, , Char
Char = Chr$((Asc(Char) Xor PasswordKey))
Put 2, , Char
Next z
Close #1
Close #2
End Sub用这段代码加密解密的话~源文件结尾会出现很多行相同的乱码,要加密的文件格式如下:
吉林
2007
01
01
满
603
600
公司
广州
2007
01
07
钾
2011
4971
公司
t = ""
For i = 1 To Len(s)
temp = Mid$(s, i, 1)
temp = Chr(Asc(temp) Xor 23)
t = t + temp
Next i
RichTextBox1.Text = t 加密解密后在文件末尾多出了“”两个字符?
================================================================
检查一下你的最后两个字符temp 是多少? 如果是0然后在XOR 23 ,依旧是23,是一个符号
如果多出来的是一个引号的话,那么有可能 temp XOR 23 = 34 ,请检查
先添加1个 text1控件 先在文本框中输入 字符串 点击窗口执行
Private Sub Form_Click()
Dim str1 As String, k() As Byte, s As String, t1 As Long, t2
str1 = Text1
k = jiami(str1)
For x = 1 To UBound(k)
t1 = k(x) Xor 231
If t1 > 127 Then
t2 = k(x + 1) Xor 231
s = s & Chr(t1 * 256 + t2)
x = x + 1
Else
s = s & Chr(k(x) Xor 231)
End If
Next
Print s
End SubPrivate Function jiami(str1 As String) As Byte()
Dim k() As Byte, ls As Long, x As Long, strfu As String
strfu = StrConv(str1, vbFromUnicode)
ls = LenB(strfu)
Print str1
ReDim k(1 To ls)
For x = 1 To ls
k(x) = AscB(MidB(StrConv(str1, vbFromUnicode), x, 1)) Xor 231
Next
jiami = k
End Function
进销存源码500元出售 http://www.skycn.com/soft/32388.html
--------------------------------------------------------