本文へ移動
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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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-skills132026年10月10日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

aicodedecode/awesome-muse-skills132026年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-skills132026年10月10日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

aicodedecode/awesome-muse-skills132026年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-skills132026年10月10日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

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

aicodedecode のスキルをすべて見る

このスキルの問題を報告する