跳到正文
cccskills
免费在 GitHub 公开

base64-pro

Encode and decode Base64 correctly with URL-safe variants, padding rules, and binary handling.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(1)

  • SKILL.md4.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Overview

Base64 shows up everywhere: data URIs, JWTs, basic auth headers, email attachments, embedding binary in JSON. It's simple — 3 bytes become 4 ASCII characters — but the variants (standard vs URL-safe), padding rules, and text-vs-binary confusions cause endless bugs. This skill covers correct Base64 handling in practice.

When to use

  • Encoding/decoding Base64 strings and files

  • Working with data URIs, JWTs, or auth headers

  • Choosing between standard and URL-safe Base64

  • Debugging padding errors and character-set issues

  • Embedding binary data in text formats (JSON, XML)

Core concepts

    • What it is (and isn't). Base64 is an encoding, not encryption — it provides zero security. It expands data by ~33% (plus padding). Anyone can decode it; never put secrets in Base64 thinking they're protected.
    • Standard vs URL-safe. Standard alphabet: A–Z a–z 0–9 + /. URL-safe replaces +→- and /→_ (JWTs, URLs, filenames). Mixing alphabets is the #1 decode failure — know which variant you're holding.
    • Padding. = pads the output to a multiple of 4 characters. Some systems omit padding (JWT does); some require it. When decoding, you may need to re-add padding: s + "=" * (-len(s) % 4).
    • Text vs bytes. Base64 operates on bytes. Encoding text requires choosing a character encoding first (UTF-8, almost always). The classic bug: encoding a Python str without .encode("utf-8"), or decoding to bytes and printing garbage instead of .decode("utf-8").
    • Line wrapping. MIME Base64 wraps at 76 characters (email); most modern uses don't wrap. Unexpected newlines in encoded output break naive decoders — strip whitespace before decoding.
    • Data URIs. data:image/png;base64,iVBOR... embeds images in HTML/CSS. Convenient for small assets; bloats pages for large ones (33% overhead + no caching). Rule of thumb: inline under ~4KB, link above.

Practical workflow

    1. Identify the variant. Look at the alphabet: +// = standard, -/_ = URL-safe. Check for padding (= at the end) or its absence. JWT segments are URL-safe without padding.
    1. Encode correctly. Text → UTF-8 bytes → Base64. Binary files → read as bytes → Base64. Specify the variant explicitly; don't rely on defaults across languages.
    1. Decode defensively. Strip whitespace/newlines, restore padding if missing, use the matching variant decoder. Validate the decoded bytes (is it actually UTF-8 text? a valid image header?).
  1. Handle in code. Python:
    import base64
    # Standard
    enc = base64.b64encode(b"hello").decode()          # 'aGVsbG8='
    dec = base64.b64decode("aGVsbG8=").decode()        # 'hello'
    # URL-safe (JWT-style), no padding
    enc = base64.urlsafe_b64encode(b"hello").decode().rstrip("=")
    padded = enc + "=" * (-len(enc) % 4)
    dec = base64.urlsafe_b64decode(padded).decode()
    
    Shell: echo -n "hello" | base64 / echo "aGVsbG8=" | base64 -d
    1. Size-check the use case. For large binaries in JSON/APIs, consider whether Base64 (33% overhead) is right vs multipart upload or direct binary transfer.
    1. Never for secrecy. If the data needs protection, encrypt first (then Base64 the ciphertext for transport if needed). Base64 alone is obfuscation, not security.

Common pitfalls

    • Variant mismatch. Decoding URL-safe input with a standard decoder (or vice versa) — fails on -, _, +, /. Match the variant.
    • Missing padding. "Incorrect padding" errors from JWT-style unpadded input. Re-pad before decoding.
    • Str/bytes confusion. Forgetting to encode text to bytes first, or forgetting to decode bytes after. In typed languages this is a compile error; in Python it's a runtime surprise.
    • Wrong text encoding. Encoding as Latin-1 but decoding as UTF-8 (or vice versa) corrupts non-ASCII text. UTF-8 everywhere, explicitly.
    • Newlines in output. MIME-wrapped Base64 pasted into JSON or URLs breaks. Strip whitespace or use non-wrapping encoders.
    • Security theater. "We Base64-encoded the API key in the client" — it's visible to anyone who looks. Encoding ≠ encryption, ever.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Master 1Password: vaults, Watchtower, passkeys, SSH agent, CLI, and family/team administration. Use when getting full value from 1Password personally or administering it for others.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

Create 3D visuals with modeling, texturing, lighting, rendering, and optimization for web and product.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

Create 3D web experiences: scene setup, models, materials, lighting, animation, scroll-driven scenes, and performance budgets. Use when adding 3D to websites beyond basic demos.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

Writing abstracts that get papers read — structured content, the 5-sentence core, and journal-specific constraints.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

Learn effectively from courses and academies: choosing programs, studying actively, and converting courses into skills. Use when investing time/money in structured learning.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

Audit designs for accessibility with WCAG checklists covering color, type, focus, motion, and content.

中文简介正在准备中。当前显示原文说明。

aicodedecode/awesome-muse-skills242026年10月10日 更新

查看 aicodedecode 的全部技能

报告此技能的问题