ByteCompress

Base64エンコーダー

プレーンテキストまたはバイナリ文字列をBase64エンコードされた出力に変換します。RFC 4648に従った標準およびURLセーフアルファベットをサポートし、絵文字や非ラテン文字を含む完全なUTF-8を処理します。

0 chars
FreeClient-sideNo signup

Base64はデータサイズを約33%増加させます。このトレードオフは、バイナリデータがメールヘッダー、JSONペイロード、HTTP認証ヘッダーなどのテキスト専用チャネルで生き残る必要があるためです。RFC 4648で定義されているBase64は、64文字のアルファベットを使用します:A-Z、a-z、0-9、さらに+/(またはURLセーフモードでは-_)。このブラウザベースのエンコーダーは、組み込みのbtoa()およびTextEncoder APIを使用して、入力を完全にデバイス上で処理します。プライベートな文字列、トークン、資格情報はサーバーに送信されることはありません。

Base64にエンコードする方法

  1. エンコードしたいテキストを入力フィールドに入力または貼り付けます。
  2. 標準またはURLセーフエンコーディングモードを選択します。
  3. エンコードされたBase64出力が出力パネルに瞬時に表示されます。
  4. コピーをクリックして、結果をクリップボードにコピーします。

Base64エンコーディングの仕組み

64文字のアルファベット

Base64は64文字のアルファベットを使用します:A-Z(26)、a-z(26)、0-9(10)、および2つの追加文字。標準Base64(RFC 4648 §4)は+/を使用します。URLセーフBase64(RFC 4648 §5)はそれらを-_に置き換えます。エンコーディングは3つの入力バイト(24ビット)を受け取り、それを4つの6ビットグループに分割し、各6ビット値を対応するアルファベット文字にマッピングします。これがBase64出力の長さが常に4の倍数である理由です。

パディング

Base64は3バイトのグループでデータを処理するため、入力の長さが3の倍数でない場合はパディングが必要です。1つの残りバイトは最後に==を生成します。2つの残りバイトは=を生成します。標準Base64ではパディングが必要ですが、特にJWTではURLセーフ実装でしばしば削除されます。

入力

Hello, World!

出力(標準Base64)

SGVsbG8sIFdvcmxkIQ==

2つの=パディング文字は、「Hello, World!」が13バイトであるために表示されます - 13 mod 3 = 1、したがって1バイトが最後のグループに残ります。

一般的な使用例

  • HTTP基本認証 - Authorization: Basicヘッダーはusername:passwordをBase64でエンコードする必要があります。
  • HTML/CSS内のインライン画像 - データURI:data:image/png;base64,iVBORw0KGgo...
  • JWTトークン - ヘッダーとペイロードセクションはURLセーフBase64を使用します。
  • メール添付ファイル - MIME(RFC 2045)はテキストベースのメールプロトコルでバイナリ添付ファイルをBase64でエンコードします。

標準とURLセーフBase64

標準Base64は+/を使用しますが、これらはURLで特別な意味を持ちます。URLセーフBase64はそれらを-_に置き換え、出力をURL、ファイル名、クエリパラメータで安全にします。JWT、OAuthトークン、URLに表示されるBase64データにはURLセーフモードを使用してください。出力をデコードするにはBase64デコーダーを使用します。URLクエリパラメータにエンコードされたデータを埋め込むには、このツールをURLエンコーダーと組み合わせて使用します。

よくある質問

Base64は暗号化の形式ですか?

いいえ。Base64はエンコーディング方式であり、暗号化やセキュリティの形式ではありません。Base64文字列を持っている人は、キーなしで瞬時にデコードできます。機密性はゼロです。データを保護する必要がある場合は、AES-256やRSAを使用してください。Base64はテキストチャネルでのバイナリデータの安全な輸送のためのものであり、情報を隠すためのものではありません。

なぜBase64の出力は常に==または=で終わるのですか?

Base64はデータを3バイトのグループにエンコードし、4文字に変換します。入力の長さが3で割り切れない場合、最後のグループは3の代わりに1または2バイトになります。1つの残りバイトは==パディングを生成し、2つの残りバイトは=を生成します。パディングは出力の長さが常に4の倍数になることを保証します。これはRFC 4648で要求されています。

このエンコーダーはUnicodeと絵文字を正しく処理しますか?

はい。エンコーダーは最初にテキストをUTF-8バイトに変換し、ブラウザのTextEncoder APIを使用してからBase64を適用します。絵文字(UTF-8で4バイト)、中国語の文字、アラビア文字、アクセント付きのラテン文字を含むUnicode文字はすべて正しくエンコードされ、元のテキストにデコードされます。

URLセーフBase64とは何ですか?いつ使用すべきですか?

URLセーフBase64(RFC 4648 §5)は+を-に、/を_に置き換えます。Base64データがURL、ファイル名、クッキー、または標準文字が誤解されるHTTPヘッダーに表示される場合は、常にこれを使用してください。JWTトークン、OAuthアクセストークン、PKCEコード検証子はすべてURLセーフBase64を使用します。

Base64はデータサイズをどのくらい増加させますか?

Base64エンコーディングはデータサイズを正確に33.33%増加させます - 3つの入力バイトは4つの出力文字になります(4/3 = 1.333...)。さらに、出力には最大2つのパディング文字が含まれる場合があります。大きなバイナリペイロードの場合、マルチパートまたはバイナリプロトコルはBase64よりも帯域幅効率が良いです。