Function RC4(inp,key)
dim s(256),k(256)
dim i,j,y,t,x
dim temp
dim Outp
dim tmpFor i = 1 To 256
S(i) = i-1
Nextj = 1
For i = 1 To 256
If j > Len(key) Then j = 1
K(i) = Asc(Mid(key, j, 1))
j = j + 1
Nextj=0for i=1 to 256
j=(j+s(i)+k(i)) Mod 256 +1 
temp=s(i)
s(i)=s(j)
s(j)=temp
Nexti=0
j=0for x=1 to len(inp)
i = (i + 1) Mod 256 +1 
j = (j + S(i)) Mod 256+1
temp = S(i)
S(i) = S(j)
S(j) = temp
t = (S(i) + (S(j) Mod 256)) Mod 256+1
Y = S(t)tmp=hex(Asc(Mid(inp, x, 1)) Xor Y)
if len(tmp)=1 then
Outp = Outp & "0" & tmp
else
Outp = Outp & tmp
end if
Next
Rc4=Outp
End Functionasp 的代码是这样的
想找一个与之对应的VC代码   我找了好多网上的 自己修改来修改去  就是失败 修改一天了
void P_RC4(UINT8 * pkey, UINT8 * pin, UINT8 * pout, UINT8 len)
{
UINT8 S[256],K[256],temp;
UINT32 i,j,t,x; j = 1;
for(i=0;i<256;i++)
{
S[i] = (UINT8)i;
if(j > 16) j = 1;
K[i] = pkey[j-1];
j++;
}
j = 0;
for(i=0;i<256;i++)
{
j = (j + S[i] + K[i]) % 256;
temp = S[i];
S[i] = S[j];
S[j] = temp;
}
i = j = 0;
for(x=0;x<len;x++)
{
i = (i+1) % 256;
j = (j + S[i]) % 256;
temp = S[i];
S[i] = S[j];
S[j] = temp;
t = (S[i] + (S[j] % 256)) % 256;
pout[x] = pin[x] ^ S[t];
}
}