Base64エンコード・デコードツールの使い方
このツールを使えば、テキストとBase64文字列を簡単に相互変換できます。以下の手順でご利用ください。
- モードを選択:画面上部のタブから「エンコード」「デコード」「URLセーフ エンコード」「URLセーフ デコード」のいずれかを選びます。
- テキストを入力:左側のテキストエリアに変換したい文字列を入力します。日本語を含むあらゆるUTF-8テキストに対応しています。
- リアルタイム変換:入力と同時に右側のテキストエリアに変換結果が表示されます。サーバーへの送信は一切行わず、すべてブラウザ内で処理されます。
- 結果をコピー:右側パネルのコピーボタンをクリックすると、変換結果がクリップボードにコピーされます。
Base64エンコードの仕組み
Base64は、RFC 4648で標準化されたエンコード方式です。バイナリデータ(0と1の列)をテキスト形式に変換することで、テキストベースのプロトコルでもバイナリデータを安全にやり取りできるようにします。
具体的な変換の流れは以下の通りです。まず、入力データを6ビットずつのグループに分割します。通常のバイトは8ビットですが、Base64では6ビット単位で処理します。3バイト(24ビット)の入力が、4つの6ビットグループ(4文字)に変換されます。
各6ビットグループ(0〜63の値)は、以下のBase64文字テーブルに従って1文字のASCII文字にマッピングされます。
A〜Z(値0〜25)a〜z(値26〜51)0〜9(値52〜61)+(値62)、/(値63)
入力バイト数が3の倍数でない場合、パディング文字 = が末尾に追加されます。入力が1バイト余る場合は == が、2バイト余る場合は = が付きます。例えば、「A」(1バイト)をBase64エンコードすると QQ== となり、「AB」(2バイト)は QUI= となります。
標準Base64とURLセーフBase64の違い
標準Base64(RFC 4648 §4)では文字 + と / を使用しますが、これらはURLにおいて特別な意味を持つため、URLパラメータやファイル名に直接使用すると問題が生じます。
URLセーフBase64(RFC 4648 §5)は、この問題を解決するために + を -(ハイフン)に、/ を _(アンダースコア)に置き換えた変種です。さらに、パディングの = もURLでは %3D にエスケープが必要なため、通常は省略されます。JWT(JSON Web Token)のヘッダーやペイロード部分には、このURLセーフBase64が使用されています。
Base64の主な用途
Base64はさまざまな場面で活用されています。代表的な用途を詳しく見てみましょう。
メール添付(MIME):電子メールのプロトコル(SMTP)は元々7ビットASCIIテキストのみを扱う設計でした。画像やPDFなどのバイナリファイルを添付するために、MIME規格ではBase64エンコードが使われています。メールソフトが自動的にエンコード・デコードを行うため、ユーザーが意識することはほとんどありません。
Data URI:HTMLやCSSの中に小さな画像やフォントを直接埋め込む際に使用します。例えば、data:image/png;base64,iVBORw0KGgo... のような形式で、外部ファイルへのHTTPリクエストを減らしてページ読み込み速度を向上させることができます。
JWT(JSON Web Token):Webアプリケーションの認証で広く使われるJWTは、ヘッダー・ペイロード・署名の3つの部分で構成され、ヘッダーとペイロードはURLセーフBase64でエンコードされます。例:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.署名
HTTP Basic認証:ユーザー名とパスワードを ユーザー名:パスワード の形式でBase64エンコードし、Authorization: Basic dXNlcjpwYXNz のようにHTTPヘッダーに含めて送信します。ただし、Base64は暗号化ではないため、必ずHTTPS通信と併用する必要があります。
XMLやJSONへのバイナリ埋め込み:テキスト形式のデータフォーマットにバイナリデータを含めたい場合にBase64が使われます。APIレスポンスで画像データを返す場合や、設定ファイルに証明書を埋め込む場合などが該当します。
日本語テキストのBase64エンコード(UTF-8の扱い)
日本語などのマルチバイト文字をBase64エンコードする際には、まず文字列をバイト列に変換する文字エンコーディングが重要になります。現在のWeb標準ではUTF-8が主流です。
例えば、「あ」という文字はUTF-8で 0xE3 0x81 0x82 の3バイトになります。これをBase64エンコードすると 44GC となります。同じ「あ」でもShift_JISでは 0x82 0xA0 の2バイトとなり、Base64の結果も異なります。
このツールではUTF-8エンコーディングを使用しているため、Pythonの base64.b64encode("テキスト".encode("utf-8")) や、JavaScriptの btoa(unescape(encodeURIComponent("テキスト"))) と同じ結果が得られます。他のシステムと連携する際は、文字エンコーディングが一致しているか必ず確認してください。
Base64は暗号化ではない(セキュリティ上の注意点)
Base64はエンコード(符号化)であり、暗号化(encryption)ではありません。これは非常に重要なポイントです。Base64エンコードされた文字列は、誰でも即座にデコードして元のデータを取得できます。秘密鍵や特別な知識は一切不要です。
したがって、パスワード、APIキー、個人情報などの機密データをBase64でエンコードしただけでは、まったくセキュリティ対策になりません。機密データを保護するには、AESやRSAなどの適切な暗号化アルゴリズムを使用してください。
HTTP Basic認証でBase64が使われていますが、これはデータ形式の変換が目的であり、セキュリティはHTTPS(TLS)による通信の暗号化に依存しています。Base64単体ではセキュリティを提供しないことを常に意識しましょう。
よくある質問(FAQ)
Base64エンコードとは何ですか?
Base64エンコードは、バイナリデータを64種類のASCII文字(A-Z、a-z、0-9、+、/)とパディング文字(=)を使ってテキスト形式に変換するエンコード方式です。RFC 4648で標準化されており、メール添付やData URIなどで広く使われています。3バイトの入力データが4文字のASCIIテキストに変換されるため、データサイズは約33%増加します。
Base64は暗号化ですか?
いいえ、Base64は暗号化ではありません。Base64は単なるエンコード方式であり、誰でも簡単にデコードして元のデータを復元できます。パスワードやAPIキーなどの機密データをBase64でエンコードしても安全ではありません。機密データの保護にはAESやRSAなどの暗号化アルゴリズムを使用してください。
URLセーフBase64とは何ですか?
URLセーフBase64(RFC 4648 §5)は、標準Base64の「+」を「-」に、「/」を「_」に置き換え、末尾のパディング「=」を省略した形式です。URLやファイル名で特殊文字として扱われる +、/、= を避けることで、URLパラメータやファイル名に安全に使用できます。JWT(JSON Web Token)でもこの形式が採用されています。
なぜBase64を使うのですか?
Base64は、バイナリデータをテキストのみを扱うプロトコルやフォーマットで安全に転送するために使います。電子メール(SMTP/MIME)、CSSのData URI、JWT、HTTP Basic認証、XMLやJSONへのバイナリデータ埋め込みなどが代表的な用途です。テキストベースの仕組みの中でバイナリデータを壊さずにやり取りできるのがBase64の最大の利点です。
Base64エンコードするとデータサイズはどうなりますか?
Base64エンコードすると、データサイズは元の約1.33倍(約33%増)になります。これは3バイト(24ビット)の入力が4文字(32ビット)の出力に変換されるためです。例えば、元のデータが300バイトの場合、Base64エンコード後は約400文字(400バイト)になります。さらに、MIMEでは76文字ごとに改行が挿入されるため、若干のオーバーヘッドが追加されます。