188224912 发表于 2021-2-1 21:24:06

python RC4算法全网独家对接如意网络验证

本帖最后由 188224912 于 2021-2-1 21:33 编辑

加密是搞定了,无法解密中文,还有就是加密后的字符数据发给服务器,采用post还是get,对易语言门外汉,有大佬指导下吗?
# coding=utf-8
# python 3.7
#####WWW.52bangqi.com
import sys
import binascii,base64
def bytesToHex(bytes):
    sb = ''
    for i in range(len(bytes)):
      hexs = hex(bytes & 0xFF)
      if len(hexs) < 2:
            sb += '0'
      sb += hexs
    print('sb',sb)
    return sb

def hexToByte(inHex):
    hexlen = len(inHex)
    print(inHex)
    print(hexlen)
    result = []
    if (hexlen % 2 == 1):
      hexlen += 1
      inHex="0"+inHex
    for i in range(0, hexlen, 2):
      data=result.append(int(inHex,16))
      data=str(data)
    print('data',data)
    return data

def initKey(aKey):
    state = list(range(256))
    bkey =
    index1 = 0
    index2 = 0
    if (len(bkey) == 0):
      return []
    for i in range(256):
      index2 = ((bkey & 0xff) + (state & 0xff) + index2) & 0xff
      state, state = state, state
      index1 = (index1 + 1) % len(bkey)
    return state

def RC4Base(input, mKkey):
    x = 0
    y = 0
    q = input
    j = len(input)
    key = initKey(mKkey)
    result = list(range(j))
    for i in range(j):
      x = (x + 1) & 0xff
      y = ((key & 0xff) + y) & 0xff
      key, key = key, key
      xorIndex = ((key & 0xff) + (key & 0xff)) & 0xff
      result = (q ^ key)
    return result

def encryRC4Byte(data, key, chartSet='utf-8'):
    if not chartSet:
      bData =
      print(bData)
      print( RC4Base(bData, key))
      return RC4Base(bData, key)
    else:
      bData = list(data.encode(chartSet))
      print('bdata',bData)
      print('rc4base',RC4Base(bData, key))
      return RC4Base(bData, key)

def decryRC4(data, key, chartSet='utf-8'):
    r = RC4Base(hexToByte(data), key)
    print("r的值",type(r))
    print(r)
    print( bytes(r).decode(chartSet))
    return bytes(r).decode(chartSet)

def encryRC4String(data, key, chartSet='utf-8'):
    print('bytestohex', bytesToHex(encryRC4Byte(data, key, chartSet)))
    print('encryRC4Byte', encryRC4Byte(data, key, chartSet))
    return bytesToHex(encryRC4Byte(data, key, chartSet))

def rcfour(data, key, signs):
    if signs == 'encode':
      a=encryRC4String(data, key)
      print(a)
      return a
    else:
      a=decryRC4(data, key)
      return a

if __name__ =='__main__':
   # try:

    #   if choices not in ['decode', 'encode']:
    #         print('usage: %s string2decode key_string decode' % sys.argv)
    #         print('   or: %s string2encode key_string encode' % sys.argv)
    #         exit()
    # except:
    #   print('usage: %s string2decode key_string decode' % sys.argv)
    #   print('   or: %s string2encode key_string encode' % sys.argv)
    #   exit()
    key ='xHwsBShMjDBp3A6jSXQMhsemmPJriNp8' #"key"
    data = '56我222' #"encoded_string"
    choices='encode' # decode or encode
   # print(key)
   #a=rcfour(data,key,choices)
   #print('加密',a)
    data='31CA4D53110574'
    #
    print('============英文======')
    b=decryRC4(data,key)
    print('解密',b)
    print('============中文======')
    data='CE2A'
    #
    print('============英文======')
    b=decryRC4(data,key)
    print('解密',b)

.12

风风风 发表于 2021-2-2 12:56:38

如何取腾讯视频的集数

wrazjd 发表于 2021-2-7 00:58:45


如何取腾讯视频的集数

大蓝莓 发表于 2021-3-27 16:17:45

感谢分享

a25030609 发表于 2021-6-24 12:53:08

我看看!!!

GTXFuryNano 发表于 2021-8-11 16:44:32

666支持下

zbcb 发表于 2022-7-31 20:03:24

我帖子有支持中文的,刚刚出炉。

全网首发,支持中文不乱码加密PHP算法,通用易语言、E4A、java
RC4的

那点事 发表于 2022-8-23 13:57:49

本帖最后由 那点事 于 2022-8-23 14:22 编辑

已解决rc4
页: [1]
查看完整版本: python RC4算法全网独家对接如意网络验证