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