基于RC4流加密算法,使用扩展的16*16的S盒,32字节密钥。
目前应该是比较安全的。
刚学习python,好不容易调通了。
而且在VC和python下各实现了一遍,两个平台能够互相加解密,很有成就感的说。
下面是python3.0中的实现,在2.x下需要稍加修改。
# for python 3.0
# from 李勃
import struct,sys,os,binascii
"""
RC4加密算法
16*16 S盒
加密单元:short
"""
def RC4(pkey,keylen,pin,dlen):
N=65536
S = list(range(N))
j = 0
for i in range(N):
j = (j + S[i] + pkey[i%keylen])%N
temp = S[i]
S[i] = S[j]
S[j] = temp
i = j = 0
pout= b''
for x in range(dlen):
i = i+1
j = (j + S[i])%N
temp = S[i]
S[i] = S[j]
S[j] = temp
pout += struct.pack('H',pin[x]^S[(S[i]+S[j])%N])
return(pout)
# bytes->short
def Coding(data):
if(len(data)%2):
data+=b'