1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import base64
- import urllib.parse
- from random import Random
- class ETkObject(object):
- def __init__(self, etk):
- self.uid = ''
- self.decrypt_uid(etk)
- def decrypt_uid(self, etk):
- try:
- c = base64.b64decode(etk)
- c = c[2:-2]
- c = urllib.parse.unquote(c.decode('utf-8'))
- c = base64.b64decode(c)
- uid = c.decode('utf-8')
- assert len(uid) == 20 or len(uid) == 14
- self.uid = uid
- except Exception as e:
- print(repr(e))
- def encrypt_uid(self, data):
- s = data.encode()
- s = base64.b64encode(s)
- startStr = self.generate_random()
- endStr = self.generate_random()
- s = '{startStr}{s}{endStr}'.format(startStr=startStr, s=s.decode('utf-8'), endStr=endStr)
- s = base64.b64encode(s.encode())
- s = s.decode('utf-8')
- return s
- @staticmethod
- def generate_random():
- characterSet = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
- length = len(characterSet) - 1
- random = Random()
- ss = ''
- for index in range(2):
- ss += characterSet[random.randint(0, length)]
- return ss
|