注册 登录
编程论坛 VB6论坛

求助以下语句翻译

金晋 发布于 2016-03-10 09:39, 1752 次点击
Option Compare Database
Option Explicit
Private Const conKey = "E54fdgedfgvdern7kVSr6ub56uyAV%^&^$^%$$*YUGhj" 'RC4密钥,可以自己更改
Public Function RC4(strInp As String) As String
    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
1 回复
#2
HVB62016-03-10 11:49
请运行以下代码,就知道您提供的代码,是加密字符串的:
Option Explicit
Private Const conKey = "E54fdgedfgvdern7kVSr6ub56uyAV%^&^$^%$$*YUGhj" 'RC4密钥,可以自己更改
Private Sub Command1_Click()
   Dim s As String
   s = "123asd"
   s = RC4(s)
   MsgBox s
End Sub
Public Function RC4(strInp As String) As String
    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

1