ツール
JA

Base64 エンコードとは?

Base64 とは、あらゆるバイナリデータを 64 種類の印字可能な文字だけで表す方法です。その仕組みや生まれた理由、使うべき場面と避けるべき場面を解説します。

Base64 をひと言でいうと

Base64 は RFC 4648 で定義されたバイナリ→テキスト変換方式で、データの 3 バイトごとを、A–Z、a–z、0–9、+、/ からなるアルファベットの 4 文字で表します。

Base64 が必要とされる理由

メール(SMTP)、JSON、XML、HTML 属性、URL、ターミナルなど、多くのシステムはテキスト専用に設計されています。画像や PDF のような生のバイナリデータには、こうしたシステムで書き換えられたり拒否されたりするバイトが含まれることがあります。Base64 はデータを安全な印字可能文字に変換するため、途中で壊れることなく届けられます。

Base64 エンコードの仕組み(ステップごとに解説)

  1. 入力バイトを用意します:M、a、n = 77、97、110。
  2. これを 24 ビットで書き表します:01001101 01100001 01101110。
  3. ビット列を 6 ビットずつ 4 つのグループに分けます:010011 010110 000101 101110 = 19、22、5、46。
  4. それぞれの数値をアルファベット表で引きます:19 = T、22 = W、5 = F、46 = u。

こうして Man は TWFu になります。デコードは、この手順を逆にたどるだけです。

Base64 のアルファベット表

値文字
0–25A–Z
26–51a–z
52–610–9
62+(URL セーフ:-)
63/(URL セーフ:_)
パディング=

= パディングの意味

入力の長さが 3 の倍数でない場合、最後のグループは埋め合わされ、= で示されます。たとえば Ma は TWE=、M は TQ== になります。正しい Base64 文字列では、パディングが途中に現れることはありません。

Base64 の種類

Base64 は暗号化ではない

Base64 は何も隠しません。誰でもすぐにデコードできます。出力がランダムな文字列に見えるため、保護の手段と誤解されがちです。機密情報には AES などの本物の暗号化を使い、Base64 は暗号化したバイト列をテキストとして運ぶためだけに使いましょう。

サイズの増加量

n バイトをエンコードした長さは 4 × ⌈n / 3⌉ 文字で、元のデータより約 33% 大きくなります。MIME の改行を入れると、さらに 2〜3% 増えます。

Base64 の主な用途

よくある質問

Base64 は暗号化やハッシュと同じですか?

いいえ。暗号化は元に戻すのに鍵が必要で、ハッシュは元に戻すことがまったくできません。一方、Base64 は誰でもデコードできます。

なぜ Base64 という名前なのですか?

64 文字からなるアルファベットを使い、1 文字で 6 ビットの情報を表すからです(26 = 64)。

文字列が Base64 かどうかを見分けるには?

A–Z、a–z、0–9、+、/(または - と _)だけで構成され、長さが通常 4 の倍数で、末尾に = が 1 つか 2 つ付くことがあります。いちばん手早いのは、当サイトのデコーダーに貼り付けて確かめる方法です。

最終更新日: