RC4 算法 VB 实现

本文介绍了如何在VB中实现RC4算法,通过调整代码,使其适用于ASP(VBScript)环境。不过,加密中文可能出现问题,可能需要进一步的字符转换处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废死了劲儿终于找到一个能用的,发现原来是 lenb 和 len 以及 ascb 和 asc 等等之间的一B之差

 

Public Sub main()
Dim key As String
For i = 1 To 16
Randomize
key 
= key & Chr(Rnd * 255)
Next i
MsgBox RC4(RC4("Welcome To Plindge Studio!", key), key)
End Sub


Private Function RC4(ByVal inp As String, _
                    key 
As StringAs String
    
Dim s(0 To 255As Byte, k(0 To 255As 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 > LenB(key) Then
            j 
= 1
        
End If
        k(i) 
= AscB(MidB(key, 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 LenB(inp)
        i 
= (i + 1Mod 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 & ChrB(AscB(MidB(inp, x, 1)) Xor y)
    
Next
    RC4 
= Outp
End Function

 

稍作改动,成为 ASP(VBScript) 版,貌似不能加密中文的,可能还需要一次转换

 

Function RC4(inp, key)
Dim S(255), K(255), i 
Dim j, temp, Y, t , x 
Dim Outp

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

    j 
= 1
    
For i = 0 To 255
        
If j > LenB(key) Then
            j 
= 1
        
End If
        k(i) 
= AscB(MidB(key, j, 1))
        j 
= j + 1
    
Next

    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 
= 0
    j 
= 0
    
For x = 1 To LenB(inp)
        i 
= (i + 1Mod 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 & ChrB(AscB(MidB(inp, x, 1)) Xor y)
    
Next
    RC4 
= Outp
End Function 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值