Base64とは?
Base64は、バイナリデータを印刷可能なASCII文字に変換するエンコード方式です。RFC 4648で定義されており、現代のインターネットプロトコルの根幹をなしています。名前は64文字のアルファベットに由来します:大文字(A–Z)、小文字(a–z)、数字(0–9)、特殊文字(+と/)。3バイトの生データが4文字のBase64に変換されるため、データサイズは約33%増加します。
仕組み
入力データは3バイト(24ビット)のブロックに分割されます。各ブロックは4つの6ビットグループに分けられ、各グループはBase64文字(値0–63)に置き換えられます。最後のブロックが不完全な場合、=パディング文字が追加されます。
主な用途
JWTトークン
JSON Web Tokenは3つのBase64URLエンコードされた部分で構成されます:ヘッダー、ペイロード、署名。URL安全な変種は+を-、/を_に置換し、URLで追加エンコードなしに使用できます。多くの開発者がBase64デコーダーでJWTの内容を確認します。
HTTP Basic認証
HTTP Basic認証はユーザー名とパスワードを(:で結合して)Base64エンコードし、Authorizationヘッダーに送信します。これは暗号化ではありません—HTTPSなしでは認証情報が読み取られます。
メール添付(MIME)
SMTPはASCIIテキストしか転送できません。MIME標準は添付ファイルをBase64エンコードしてメールサーバー経由で転送できるようにします。PDFや画像などのメール添付はこの仕組みで送られます。
CSS data URI
小さな画像やSVGアイコンを直接CSSに埋め込めます:background: url('data:image/png;base64,...')。追加のHTTPリクエストを削減できます。
REST APIとデータベース
JSONはテキストデータしか転送できません。そのため、画像やバイナリデータはAPIリクエストのボディでBase64エンコードされます。多くのクラウドサービスがファイルアップロードにBase64を要求します。
Base64 ≠ 暗号化
Base64はセキュリティ技術ではありません。誰でも数秒でデコードできます。パスワードや個人情報をBase64のみで保存することは深刻なセキュリティ脆弱性です。機密データの保護にはAES-256またはRSAを使用してください。
URL安全なBase64(Base64URL)
RFC 4648 §5はBase64URLを定義します:+が-に、/が_になります。OAuth 2.0 PKCE、JWT、現代のAPIに不可欠です。
プライバシー
このツールはすべての処理をブラウザ内で行います。データはサーバーに送信されません。
コメント