Base64 とは?よくある質問(FAQ)と解説
Base64 の仕組み・用途・注意点をまとめました。
Base64 とは
バイナリを英数字と +・/・= の
64 文字だけで表す変換方式です。テキストしか通らない経路でも壊れません。暗号化ではありません。
3 バイトを 4 文字に変換します。例:Hello → SGVsbG8=
用途:メール添付(MIME)、データURI、Basic 認証、JSON / XML、JWT。
なぜ Base64 が必要になったのか
コンピューターのデータは 1 バイト= 8 ビットの数値の並びで、0 から 255 までのどの値も取りえます。 ところが、初期の電子メールのような古い通信の仕組みは「文字として意味のある値だけが通る」前提で作られていました。 そこへ画像や実行ファイルのバイト列をそのまま流すと、値が勝手に書き換えられたり、 途中の装置が制御文字と解釈して通信そのものが乱れたりします。
そこで、どの経路でも安全に通ると分かっている文字だけを使ってバイナリを書き直すという発想が生まれました。 それが Base64 です。使う文字を英大文字・英小文字・数字・記号 2 種類の合計 64 種類に限ることで、 テキストしか通らない場所にバイナリを持ち込めるようにしています。
現在の通信路はバイナリを通せるものが多くなりましたが、 「設定ファイルに 1 行で書きたい」「JSON の文字列として入れたい」「URL に含めたい」といった テキストの器にバイナリを入れたい場面は残っており、Base64 は今も広く使われています。
変換の仕組み
Base64 が使う 64 文字の内訳は、A〜Z(26)、
a〜z(26)、0〜9(10)、
そして + と /(2)です。合計でちょうど 64 種類になります。
64 は 2 の 6 乗なので、1 文字でちょうど 6 ビットぶんを表せます。 元データは 1 バイト= 8 ビットの並びなので、6 と 8 の最小公倍数である 24 ビット (= 3 バイト= 4 文字)が変換の単位になります。
- 元データを 3 バイト(24 ビット)ずつに区切る。
- 24 ビットを 6 ビットずつ 4 つに切り分ける。
- それぞれの 6 ビットの値(0〜63)を、対応する 1 文字に置き換える。
3 バイトで割り切れないときは、最後のかたまりが 1 バイトまたは 2 バイトになります。
その場合は足りないビットを 0 で埋めて文字に変換し、4 文字に足りない分を = で補います。
残りが 1 バイトなら = は 2 個、2 バイトなら 1 個です。
出力の長さは 4 ×(元のバイト数 ÷ 3 の切り上げ)で決まります。 10 バイトなら 4 × 4 = 16 文字、100 バイトなら 4 × 34 = 136 文字です。
どこで使われているか
- メールの添付ファイル(MIME): 添付ファイルは Base64 にしてメール本文に埋め込まれます。76 文字ごとに改行が入るのが慣例です。
-
データURI:
data:image/png;base64,に続けて画像の Base64 を書くと、 HTML や CSS の中に画像そのものを埋め込めます。小さなアイコンで通信回数を減らす用途に使われます。 -
Basic 認証:
ユーザー名:パスワードを Base64 にして HTTP ヘッダーに載せます。 これは秘匿ではなく形式をそろえるための変換にすぎないため、 HTTPS でない通信で使うと中身がそのまま読まれます。 - JWT(JSON Web Token): ヘッダー・ペイロード・署名の 3 つを URL-safe Base64 にしてピリオドでつないだ形式です。 ペイロードは誰でも読めるため、秘密の値を入れてはいけません。
-
証明書・鍵の PEM 形式:
-----BEGIN CERTIFICATE-----で始まるテキストの中身が Base64 です。 - JSON や XML にバイナリを入れるとき: どちらも仕様上バイト列をそのまま書けないため、Base64 の文字列として持たせます。
暗号化ではない、という点について
Base64 の文字列は一見して意味が読み取れないため、隠せているように感じます。 しかし Base64 には鍵という概念がありません。 変換の規則は公開されていて誰でも同じ手順で戻せるため、 秘匿の手段としては何の役にも立ちません。
Base64 は「読めない形にするもの」ではなく「壊れずに運べる形にするもの」です。 パスワードや個人情報を守りたい場合は、AES のような暗号化や、 パスワードの保存であればハッシュ関数(bcrypt など)を使ってください。 Basic 認証や JWT のペイロードが Base64 であることは、 それらが安全だという意味ではありません。
標準の Base64 と URL-safe Base64
標準の Base64 が使う + と / は、URL の中では別の意味を持つ文字です。
/ はパスの区切りに、+ はクエリ文字列で空白として解釈されることがあります。
そのため URL やファイル名で使うときは、この 2 文字を置き換えた変種を用います。
| 項目 | 標準の Base64 | URL-safe Base64 |
|---|---|---|
| 62 番目の文字 | + | - |
| 63 番目の文字 | / | _ |
| 末尾のパディング | = を付ける | 省略されることが多い |
| 主な用途 | メール・データURI・PEM | JWT・URL・ファイル名 |
当ツールは標準の Base64 を扱います。- や _ を含む文字列は、
そのままではデコードできません。
よくある質問(FAQ)
エンコードとデコードの違いは?
元データ→ Base64 がエンコード、逆がデコードです。最後に編集した欄から自動判定します。
暗号化になりますか?
なりません。鍵なしで誰でも戻せます。機密情報は AES などで暗号化してください。
サイズはどれくらい増えますか?
約 1.33 倍(33% 増)です。
末尾の「=」は何ですか?
4 文字単位に揃えるパディングで、データではありません。
URL-safe Base64 との違いは?
+・/ を -・_ に置き換えたものです。JWT で使われます。
デコードに失敗するのはなぜ?
形式(4 文字単位・使用文字・パディング)に合わない、または UTF-8 として不正なときです。
入力データは送信されますか?
変換はブラウザ内で完結します。ただし入力内容は記録しています(プライバシーポリシー参照)。
Base64 にするとデータは圧縮されますか?
いいえ、逆に増えます。Base64 は 3 バイトを 4 文字に置き換える表現方法で、情報を削る仕組みを持ちません。容量を減らしたい場合は ZIP や gzip などの圧縮を先にかけ、そのうえで Base64 にします。
証明書や秘密鍵の PEM 形式も Base64 ですか?
はい。BEGIN CERTIFICATE のような行で挟まれた中身は、DER 形式のバイナリを Base64 にして 64 文字ごとに改行したものです。テキストとして扱えるため、設定ファイルや環境変数に貼り付けられます。
Base32 や Base58 との違いは何ですか?
使う文字の種類の数が違います。Base32 は大文字と数字だけを使うため、見間違いや電話での読み上げに強い一方で、Base64 より長くなります。Base58 は 0 と O、I と l のような紛らわしい文字を除いたもので、暗号資産のアドレス表記などに使われます。
改行が入った Base64 でも元に戻せますか?
戻せます。メールの MIME や PEM 形式では一定の文字数ごとに改行が入りますが、改行と空白は意味を持たないため、当ツールは取り除いてから変換します。
操作手順と関連ページ
画面の使い方と、デコードに失敗したときの確認手順は Base64 変換ツールの使い方にまとめています。 このサイトの成り立ちと運営方針は運営者情報、 ほかのツールはツール一覧 半径から市区町村を探すから探せます。