切换风格

默认Lavender Sky Flowers Wizard Snow Beige California City Dragon Black London Sunset glow Pink Cloud

3

主题

55

积分

0

精华

用户组 

易积分
21
热心
0
好评
0
python RC4算法全网独家对接如意网络验证[复制链接]
发表于 2021-2-1 21:24:06 | 显示全部楼层 |阅读模式
本帖最后由 188224912 于 2021-2-1 21:33 编辑

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

  15. def hexToByte(inHex):
  16.     hexlen = len(inHex)
  17.     print(inHex)
  18.     print(hexlen)
  19.     result = []
  20.     if (hexlen % 2 == 1):
  21.         hexlen += 1
  22.         inHex="0"+inHex
  23.     for i in range(0, hexlen, 2):
  24.         data=result.append(int(inHex[i:i+2],16))
  25.         data=str(data)
  26.     print('data',data)
  27.     return data

  28. def initKey(aKey):
  29.     state = list(range(256))
  30.     bkey =[ord(i) for i in list(aKey)]
  31.     index1 = 0
  32.     index2 = 0
  33.     if (len(bkey) == 0):
  34.         return []
  35.     for i in range(256):
  36.         index2 = ((bkey[index1] & 0xff) + (state[i] & 0xff) + index2) & 0xff
  37.         state[i], state[index2] = state[index2], state[i]
  38.         index1 = (index1 + 1) % len(bkey)
  39.     return state

  40. def RC4Base(input, mKkey):
  41.     x = 0
  42.     y = 0
  43.     q = input
  44.     j = len(input)
  45.     key = initKey(mKkey)
  46.     result = list(range(j))
  47.     for i in range(j):
  48.         x = (x + 1) & 0xff
  49.         y = ((key[x] & 0xff) + y) & 0xff
  50.         key[x], key[y] = key[y], key[x]
  51.         xorIndex = ((key[x] & 0xff) + (key[y] & 0xff)) & 0xff
  52.         result[i] = (q[i] ^ key[xorIndex])
  53.     return result

  54. def encryRC4Byte(data, key, chartSet='utf-8'):
  55.     if not chartSet:
  56.         bData = [ord(i) for i in data.encode(chartSet)]
  57.         print(bData)
  58.         print( RC4Base(bData, key))
  59.         return RC4Base(bData, key)
  60.     else:
  61.         bData = list(data.encode(chartSet))
  62.         print('bdata',bData)
  63.         print('rc4base',RC4Base(bData, key))
  64.         return RC4Base(bData, key)

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

  71. def encryRC4String(data, key, chartSet='utf-8'):
  72.     print('bytestohex', bytesToHex(encryRC4Byte(data, key, chartSet)))
  73.     print('encryRC4Byte', encryRC4Byte(data, key, chartSet))
  74.     return bytesToHex(encryRC4Byte(data, key, chartSet))

  75. def rcfour(data, key, signs):
  76.     if signs == 'encode':
  77.         a=encryRC4String(data, key)
  78.         print(a)
  79.         return a
  80.     else:
  81.         a=decryRC4(data, key)
  82.         return a

  83. if __name__ =='__main__':
  84.    # try:

  85.     #     if choices not in ['decode', 'encode']:
  86.     #         print('usage: %s string2decode key_string decode' % sys.argv[0])
  87.     #         print('   or: %s string2encode key_string encode' % sys.argv[0])
  88.     #         exit()
  89.     # except:
  90.     #     print('usage: %s string2decode key_string decode' % sys.argv[0])
  91.     #     print('   or: %s string2encode key_string encode' % sys.argv[0])
  92.     #     exit()
  93.     key ='xHwsBShMjDBp3A6jSXQMhsemmPJriNp8' #"key"
  94.     data = '56我222' #"encoded_string"
  95.     choices='encode' # decode or encode
  96.    # print(key)
  97.    #  a=rcfour(data,key,choices)
  98.    #  print('加密',a)
  99.     data='31CA4D53110574'
  100.     #
  101.     print('============英文======')
  102.     b=decryRC4(data,key)
  103.     print('解密',b)
  104.     print('============中文======')
  105.     data='CE2A'
  106.     #
  107.     print('============英文======')
  108.     b=decryRC4(data,key)
  109.     print('解密',b)
复制代码

.[b sytle="disyplay:none"]12
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

153

主题

1645

积分

0

精华

用户组 

易积分
1536
热心
0
好评
0

活跃会员

发表于 2021-2-2 12:56:38 | 显示全部楼层
如何取腾讯视频的集数
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

184

积分

0

精华

用户组 

易积分
895
热心
0
好评
0
发表于 2021-2-7 00:58:45 | 显示全部楼层

如何取腾讯视频的集数
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

16

积分

0

精华

用户组 

易积分
79
热心
0
好评
0
发表于 2021-3-27 16:17:45 | 显示全部楼层
感谢分享
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

1

主题

41

积分

0

精华

用户组 

易积分
15
热心
0
好评
0
发表于 2021-6-24 12:53:08 | 显示全部楼层
我看看!!!
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

2

主题

14

积分

0

精华

用户组 

易积分
15
热心
0
好评
0
发表于 2021-8-11 16:44:32 | 显示全部楼层
666  支持下
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

42

主题

1852

积分

0

精华

用户组 

易积分
338
热心
0
好评
1
QQ
发表于 2022-7-31 20:03:24 来自手机 | 显示全部楼层
我帖子有支持中文的,刚刚出炉。

全网首发,支持中文不乱码加密PHP算法,通用易语言、E4A、java
RC4的
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

0

主题

2

积分

0

精华

用户组 

易积分
14
热心
0
好评
0
发表于 2022-8-23 13:57:49 | 显示全部楼层
本帖最后由 那点事 于 2022-8-23 14:22 编辑

已解决rc4
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

QQ|sitemap|免责声明|RGB颜色对照表|手机版|小黑屋| 易如意 - E4A中文编程学习交流论坛

GMT+8, 2024-4-29 20:44 , Processed in 0.055434 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2018 eruyi.cn

返回顶部