RC4 算法 VB 实现

    技术2022-05-11  93

    废死了劲儿终于找到一个能用的,发现原来是 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   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  >  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  +   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  &  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  +   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  &  ChrB(AscB(MidB(inp, x,  1 ))  Xor  y)     Next     RC4  =  Outp End Function  

    最新回复(0)