base(base自定义解码)

题目

import base64
str = "j2rXjx8wSZjD"
zdy = "GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5"
stand = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789=+/"
ec = str.maketrans(stand,zdy)
dc = str.maketrans(zdy,stand)
def encode(x):
	return x.translate(ec)
def decode(x):
	return x.translate(dc)
flag = decode(str)
print(flag)
flag = base64.b64decode(flag)
print(flag)

import string
zfj = "GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5"
sy = {char: index for index, char in enumerate(zfj)}
ys = {index: char for index, char in enumerate(zfj)}
def jm(s):
    tc = s.count('E')
    s = s.rstrip('E')
    ejz = ''
    for char in s:
        index = sy[char]
        ejz += bin(index)[2:].zfill(6)
    ejz = ejz[:len(ejz) - tc * 2]
    jmzj = bytearray()
    for i in range(0, len(ejz), 8):
        byte = int(ejz[i:i + 8], 2)
        jmzj.append(byte)
    return jmzj

def bm(s):
    zj= s.encode()
    ejz = ''
    for byte in zj:
        ejz += bin(byte)[2:].zfill(8)
    while len(ejz) % 6 != 0:
        ejz += 'E'
    bm = ''
    for i in range(0, len(ejz), 6):
        index = int(ejz[i:i + 6], 2)
        bm += ys[index]
    padding = len(s) % 3
    if padding == 1:
        bm += 'EE'
    elif padding == 2:
        bm += 'E'
    return bm
str = 'j2rXjx8wSZjD'
# bm = bm(str)
# print("编码:",bm)
jm = jm(str).decode()
print("解码:", jm)


posted @ 2025-04-27 22:10  lethe311  阅读(5)  评论(0)    收藏  举报