← 返回题库
初级

手写Base64URL编码/解码

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve():
    from pyodide.http import open_url
    from io import StringIO
    tokens_csv = open_url("https://data.zuihe.com/dbd/ms-shop/state_02/tokens.csv").read()
    import base64
    def b64url_encode(s):
        return base64.urlsafe_b64encode(s.encode('utf-8')).rstrip(b'=').decode()
    def b64url_decode(s):
        pad = 4 - len(s) % 4
        if pad != 4: s += '=' * pad
        return base64.urlsafe_b64decode(s).decode('utf-8')
    header = '{"alg":"HS256","typ":"JWT"}'
    payload = '{"sub":"1","role":"admin","exp":1748739600}'
    enc_h = b64url_encode(header)
    enc_p = b64url_encode(payload)
    print(f"header encoded: {enc_h}")
    print(f"payload encoded: {enc_p}")
    print(f"header decoded: {b64url_decode(enc_h)}")
    print(f"payload decoded: {b64url_decode(enc_p)}")
    print(f"no padding chars: {'=' not in enc_h and '=' not in enc_p}")

示例

输入
solve()
期望输出
header encoded: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
payload encoded: eyJzdWIiOiIxIiwicm9sZSI6ImFkbWluIiwiZXhwIjoxNzQ4NzM5NjAwfQ
header decoded: {"alg":"HS256","typ":"JWT"}
payload decoded: {"sub":"1","role":"admin","exp":1748739600}
no padding chars: True
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码