我用下面函数把STR(包括汉字)加密后,保存到INI文件里,再读取出来,然后还原.有些信息老错误.不知道什么原因.我没有进行编码转换,改怎么转换编码啊?Public Function EnDeCode(CharString, key As Integer) Dim X As Single, i As Long Dim CharNum As Integer, RandomInteger As Integer Dim CharSingle As String * 1 On Local Error GoTo EDcodeError EnDeCode = "" If Len(CharString) = 0 Then 'EnDeCode = "1" Exit Function End If X = Rnd(-key) For i = 1 To Len(CharString) CharSingle = Mid$(CharString, i, 1) CharNum = Asc(CharSingle) RandomInteger = Int(256 * Rnd) And &H7F CharNum = CharNum Xor RandomInteger CharSingle = Chr$(CharNum) EnDeCode = EnDeCode + CharSingle Next i Exit FunctionEDcodeError: EnDeCode = "0"
'////////////////////////
End Function
'////////////////////////
End Function
解决方案 »
- 不用时间控件,如何接收SENDMESSAGE发过来的内容?
- 能帮我解释下 这2段代码的意思吗?
- 散分了,编了几个小程序,庆祝下,呵呵!
- .........................我听说的最搞笑的事,(来源于真实生活,绝非转贴),大家一起来分享..............
- 如何判断客户计算机上是否安装WORD和EXCEL?
- 可否有请班竹?
- 教科书中transfer控件的问题-在线求助,解决问题马上结帖
- 打包的问题!急急急!
- 本人有一套PB6.5+SQL SERVER7.0 开发的酒店管理系统源码,各模块均有,只想跟你换VB开发的ERP源码.
- 急问???谁能给我提供处理硬件中断的控件???如:tvichw32.ocx等,多谢了!!!
- 菜鸟提问:俺用FindWindow得到的句柄,无论找没找到窗口,返回值都是不为0的,详见内,非常感谢!
- 请问:我编写一个OCX控件,能否在代码中实现VB调用javascript方法或者页面某个控件?
使用方法
加密EnDeCode(待加密字符串,密码[只能有数字])
解密EnDeCode(待加密字符串,密码[只能有数字])测试方法,建立新窗体,个TEXT1,text2 command1,command2生成的样式为:BG?.VI:]HLLOption ExplicitPublic Function EnDeCode(CharString, key As Integer) Dim X As Single, i As Long Dim CharNum As Integer, RandomInteger As Integer Dim CharSingle As String * 1 On Local Error GoTo EDcodeError EnDeCode = "" If Len(CharString) = 0 Then 'EnDeCode = "1" Exit Function End If X = Rnd(-key) For i = 1 To Len(CharString) CharSingle = Mid$(CharString, i, 1) CharNum = Asc(CharSingle) RandomInteger = Int(256 * Rnd) And &H7F CharNum = CharNum Xor RandomInteger CharSingle = Chr$(CharNum) EnDeCode = EnDeCode + CharSingle Next i Exit FunctionEDcodeError: EnDeCode = "0"
'////////////////////////
End FunctionPrivate Sub Command1_Click()
Text2.Text = EnDeCode(Text1.Text, 21)
Text1.Text = ""
End SubPrivate Sub Command2_Click()
Text1.Text = EnDeCode(Text2.Text, 21)
Text2.Text = ""
End SubPrivate Sub Form_Load()
MsgBox "Command1为加密,Command2为解密"
Text1.Text = "等待加密的字符串,Test"
End Sub
asc函数恐怕不行吧,
你需要把字符串转成byte数组。
Dim X As Single, i As Long
Dim CharNum As Integer, RandomInteger As Integer
Dim CharSingle As String * 1
Dim a() As Byte
On Local Error GoTo EDcodeError
EnDeCode = ""
If Len(CharString) = 0 Then
'EnDeCode = "1"
Exit Function
End If
X = Rnd(-key)
a = StrConv(CharString, vbFromUnicode) '这里将Unicode转成DBCS
For i = 0 To UBound(a)
CharNum = a(i)
RandomInteger = Int(256 * Rnd) And &H7F
CharNum = CharNum Xor RandomInteger
CharSingle = Chr$(CharNum)
EnDeCode = EnDeCode & CharSingle
Next i
Exit Function
EDcodeError:
EnDeCode = "0"
'////////////////////////
End Function