欢 迎 光 临 数据载入中,请稍候......'s BLog
数据载入中,请稍候......
这就是我
数据载入中,请稍候......
用户登陆
数据载入中,请稍候......
最新公告
数据载入中,请稍候......
站点日历
数据载入中,请稍候......
最新日志
数据载入中,请稍候......
最新回复
数据载入中,请稍候......
最新留言
数据载入中,请稍候......
 日志搜索

友情链接
其他信息


·字符串转换的两个实用函数      -|cloudy 发表于 2006-12-13 11:28:00
字符串转换的两个实用函数
作    者:朱亦文  
发布日期:2006年12月13日
摘    要:有的时候我们使用RC4来编码数据,但产生的字符串已经不是正常的字符串,在存储过程中会造成混乱,以致于无法用RC4来还原原来的数据。
解决问题办法就是将这个不正常的字符串进行转换后存储,取出时再转换回来。

正    文:

有的时候我们使用RC4来编码数据,但产生的字符串已经不是正常的字符串,在存储过程中会造成混乱,以致于无法用RC4来还原原来的数据。


解决问题办法就是将这个不正常的字符串进行转换后存储,取出时再转换回来。

两个函数如下:

'将一个字符数组转换成以逗号分隔的数字字符串
'作者:朱亦文
'时间:2006.12.13

Function String2Num(ByVal s As String) As String
    If s = "" Then Exit Function
    
    Dim i As Integer, l As Integer
    Dim ByteGB() As Byte
    
    ByteGB = s
    l = UBound(ByteGB)
    For i = 0 To l
        String2Num = String2Num & "," & ByteGB(i)
    Next
    String2Num = Mid(String2Num, 2)
End Function

'将以逗号分隔的数字字符串还原成一个字符数组
'作者:朱亦文
'时间:2006.12.13

Function Num2String(ByVal s As String) As String
    If s = "" Then Exit Function
    
    Dim aCh, i As Integer, l As Integer
    
    aCh = Split(s, ",")
    l = UBound(aCh)
    ReDim ByteGB(l) As Byte
    
    For i = 0 To l
        ByteGB(i) = CInt(aCh(i))
    Next
    Num2String = ByteGB
End Function


附刘小军先生的RC4函数

'conKey是加密时的密钥,可以自己更改
Private Const conKey = "zy123456789"

Public Function RC4(strInp As String) As String
'=================================
'RC4加密函数
'=================================
'修改:刘小军(Alex) 2002-3-22
'适用于使用UNICODE的双字节ACCESS,测试证明支持中英文混合的文本加密
'=================================
'参数:
'    strInp  需要加密或解密的字符串
'=================================
'
'这是修改过的RC4加密方法,主要更改是把密钥固定在程序中了
'使用方法:
'   RC4("345G4")得到"345G4"加密之后的字符串
'   RC4(RC4("345G4"))可以将加密后的字符串还原为"345G4"
'

Dim s(0 To 255) As Byte, K(0 To 255) As Byte, i As Long
Dim j As Long, Temp As Byte, Y As Byte, t As Long, x As Long
Dim Outp As String

For i = 0 To 255
    s(i) = i
Next

j = 1
For i = 0 To 255
    If j > Len(conKey) Then j = 1
    K(i) = Asc(Mid(conKey, j, 1))
    j = j + 1
Next i

j = 0
For i = 0 To 255
    j = (j + s(i) + K(i)) Mod 256
    Temp = s(i)
    s(i) = s(j)
    s(j) = Temp
Next i

i = 0
j = 0
For x = 1 To Len(strInp)
    i = (i + 1) Mod 256
    j = (j + s(i)) Mod 256
    Temp = s(i)
    s(i) = s(j)
    s(j) = Temp
    t = (s(i) + (s(j) Mod 256)) Mod 256
    Y = s(t)
     
    Outp = Outp & ChrW(AscW(Mid(strInp, x, 1)) Xor Y)
Next
    RC4 = Outp
End Function

[阅读全文 | 回复(0) | 引用通告 | 编辑]

  • 标签:字符串 
  • 发表评论:
    数据载入中,请稍候......