import base64 from loguru import logger class CustomBase64: """自定义的Base64编码和解码""" mapping = { "Y": "V", "X": "U", "A": "Z", "s": "p", "J": "G", "F": "C", "U": "R", "u": "r", "W": "T", "i": "f", "V": "S", "E": "B", "2": "2", "P": "M", "C": "X", "8": "8", "r": "o", "L": "I", "H": "E", "M": "J", "j": "g", "b": "y", "p": "m", "O": "L", "l": "i", "R": "O", "G": "D", "I": "F", "y": "v", "t": "q", "0": "0", "c": "x", "Q": "N", "7": "7", "N": "K", "3": "3", "Z": "W", "n": "k", "1": "1", "d": "a", "5": "5", "S": "P", "K": "H", "h": "e", "k": "h", "w": "t", "T": "Q", "4": "4", "m": "j", "z": "w", "g": "d", "D": "A", "v": "s", "B": "Y", "/": "/", "q": "n", "f": "c", "a": "z", "9": "9", "o": "l", "e": "b", "x": "u", } reverse_mapping = { "V": "Y", "U": "X", "Z": "A", "p": "s", "G": "J", "C": "F", "R": "U", "r": "u", "T": "W", "f": "i", "S": "V", "B": "E", "2": "2", "M": "P", "X": "C", "8": "8", "o": "r", "I": "L", "E": "H", "J": "M", "g": "j", "y": "b", "m": "p", "L": "O", "i": "l", "O": "R", "D": "G", "F": "I", "v": "y", "q": "t", "0": "0", "x": "c", "N": "Q", "7": "7", "K": "N", "3": "3", "W": "Z", "k": "n", "1": "1", "a": "d", "5": "5", "P": "S", "H": "K", "e": "h", "h": "k", "t": "w", "Q": "T", "4": "4", "j": "m", "w": "z", "d": "g", "A": "D", "s": "v", "Y": "B", "/": "/", "n": "q", "c": "f", "z": "a", "9": "9", "l": "o", "b": "e", "u": "x", } @staticmethod def decode(encoded): std_encoded = "".join(CustomBase64.reverse_mapping.get(c, c) for c in encoded) if not len(std_encoded) % 4 == 0: std_encoded = std_encoded + "=" * (4 - len(std_encoded) % 4) try: decoded = base64.b64decode(std_encoded).decode() return decoded except Exception as e: logger.error(f"解码错误: {e}") return None @staticmethod def encode(text): std_encoded = base64.b64encode(text.encode()).decode() custom_encoded = "".join(CustomBase64.mapping.get(c, c) for c in std_encoded) return custom_encoded.replace("=", "")