はじめに
Base64は、バイナリデータをA-Z、a-z、0-9などの文字を使って表現するエンコード方式です。API、メール、Data URL、トークン周辺など、バイナリをそのまま扱いにくい場所で文字列として受け渡したいときに使われます。
日本語をBase64へ変換するときは、文字そのものを直接置き換えるのではなく、まずUTF-8などの文字コードでバイト列へ変換します。そのバイト列をBase64として表し、デコード時は逆の順番で戻します。
この記事では、Base64の基本、エンコードとデコード、日本語UTF-8、標準Base64とBase64URL、末尾の=、文字数が増える理由、暗号化との違いを整理します。
Base64とは?
Base64は、3バイト(24ビット)のデータを6ビットずつ4つに分け、64種類の文字へ対応させる方式です。標準Base64では英大文字26、英小文字26、数字10、+、/の合計64文字を使います。
変換後はテキストとして扱いやすくなりますが、データ量は小さくなりません。むしろ3バイトを4文字で表すため、パディングや改行を除いて元データよりおよそ4/3へ増えます。圧縮の代わりにはなりません。
Base64へエンコードする方法
英数字だけの短い文字列なら結果を確認しやすく、Helloを標準Base64へ変換するとSGVsbG8=になります。末尾の=は、3バイト単位に満たないデータを4文字単位へそろえるためのパディングです。
日本語や絵文字を含む場合はUTF-8へ変換したバイト列をBase64化します。ブラウザAPIのbtoaへ日本語文字列をそのまま渡すと正しく扱えない場合があるため、UTF-8変換を挟むことが重要です。
| 元のテキスト | 標準Base64 | ポイント |
|---|---|---|
| Hello | SGVsbG8= | ASCII文字列の基本例 |
| 日本語 | 5pel5pys6Kqe | UTF-8としてエンコード |
Base64をデコードする方法
デコードではBase64文字列から元のバイト列を復元します。元データがUTF-8テキストなら、そのバイト列をUTF-8として読み取ることで日本語や英数字へ戻せます。
Base64は画像や圧縮ファイルなど任意のバイナリにも使えるため、すべてのBase64がUTF-8テキストへ戻るわけではありません。テキスト用ツールでUTF-8エラーになる場合は、元データが文字列ではない可能性があります。
標準Base64とBase64URLの違い
標準Base64の+と/は、URLやファイル名の文脈で特別な意味を持つ場合があります。Base64URLでは+を-、/を_へ置き換え、URLへ入れやすい文字だけで表します。
Base64URLでは末尾の=を省略することがあります。標準Base64とBase64URLは見た目が似ていますが、+、/、-、_の扱いが異なるため、受け渡し先の仕様に合わせて選びます。
| 項目 | 標準Base64 | Base64URL |
|---|---|---|
| 62番目の文字 | + | - |
| 63番目の文字 | / | _ |
| 末尾の= | 付く場合がある | 省略する場合が多い |
| 主な用途 | 一般的なBase64表現 | URL・JWTなど |
Base64の末尾に=が付く理由
Base64は元データを3バイトずつ処理し、4文字へ変換します。最後のデータが3バイトに満たない場合、標準Base64では出力を4文字単位へそろえるため=を付けます。元データの長さによって=が1個または2個付くことがあります。
=は暗号鍵やチェックサムではなく、長さをそろえるためのパディングです。Base64URLでは仕様や実装によって省略されることがあります。
Base64は暗号化ではない
Base64文字列は元の文字列が直接読めない見た目になりますが、変換ルールが公開された可逆な形式であり、誰でもデコードできます。パスワード、APIキー、アクセストークン、個人情報をBase64へ変えただけでは保護できません。
秘密情報を守る目的では、適切な暗号化、TLS、アクセス制御、秘密情報管理などを使います。Base64はデータ形式の都合を合わせるためのエンコードとして使い分けます。
ToolerでBase64を変換する手順
Base64エンコード・デコードを開き、変換方向を選びます。日本語を含む文字列を入力してBase64へ変換する場合は、UTF-8として処理されます。URL-safe形式が必要ならBase64URLへ切り替えます。
デコードでは標準Base64またはBase64URLを選び、文字列を貼り付けてテキストへ戻します。結果はコピーまたはTXT保存でき、変換内容はブラウザ内で処理します。
公開前のチェックリスト
- ✓元データの文字コードがUTF-8か確認したか
- ✓標準Base64とBase64URLのどちらが必要か確認したか
- ✓Base64を暗号化として扱っていないか
- ✓デコード結果が文字化けした場合に元の文字コードを確認したか
- ✓秘密情報をBase64化しただけで公開していないか
読んだ内容をすぐ確認
Base64エンコード・デコードを使う
日本語UTF-8の文字列をBase64・Base64URLへ変換し、元のテキストへ戻せます。
よくある質問
Q. Base64は暗号化ですか?
A. いいえ。Base64は可逆なエンコードで、誰でもデコードできます。秘密情報を保護する仕組みではありません。
Q. 日本語をBase64へ変換できますか?
A. できます。日本語をUTF-8のバイト列へ変換してからBase64化します。
Q. Base64の最後の=は何ですか?
A. 3バイト単位で処理したときに不足する部分を4文字単位へそろえるパディングです。1個または2個付くことがあります。
Q. Base64URLとは何ですか?
A. URLで扱いやすいよう、標準Base64の+を-、/を_へ置き換え、末尾の=を省略することがある形式です。
Q. Base64にすると容量は小さくなりますか?
A. 通常は小さくなりません。Base64化すると元データよりおよそ4/3へ増えるため、圧縮用途には向きません。

