Base64は、すべての開発者が使用したことがありますが、説明するには一呼吸置く必要がある形式の一つです。ランダムな文字に見えます。データを大きくします。それにもかかわらず、メール添付ファイル、JWTペイロード、データURI、およびテキスト専用チャネルでバイナリデータを転送する必要がある数十の他のプロトコルの基盤となっています。
Base64デコーダーは最も一般的な開発者ユーティリティの一つです — そして無料のものはほとんどがデータをサーバーに送信しています。
Base64の実際の動作
Base64は任意のバイナリデータを印刷可能なASCII文字にエンコードします。入力の3バイトごとに4文字の出力が生成され、64文字のアルファベット(A-Z、a-z、0-9、+、/)を使用します。入力長が3の倍数でない場合、=文字で出力をパディングします。
トレードオフ:Base64はデータサイズを約33%増加させます。 1KBの画像は約1.3KBのテキストになります。
Base64はエンコードであり、暗号化ではありません。 誰でもデコードできます。Base64に機密データを格納している場合は、保護しているのではなく、隠しているだけです。
標準 vs URLセーフBase64
すべてのBase64が同一ではありません:
| バリエーション | アルファベット | パディング | 使用場面 |
|---|---|---|---|
| 標準 | A-Za-z+/= |
あり | メール(MIME)、一般的な転送 |
| URLセーフ | A-Za-z-_ |
なし | JWT、URLパラメータ、ファイル名 |
| パディングなし | A-Za-z+/ |
なし | 一部のAPI、コンパクト保存 |
URLセーフBase64の-と_はURL内の特殊文字である+と/を置き換えます。JWTやデータURIをデバッグしていてデコードが失敗した場合、エンコーダーがURLセーフBase64を使用したか標準Base64を使用したかを確認してください。
開発者がBase64に出会う場面
JWTペイロード。 JWTの3つの部分(ヘッダー、ペイロード、署名)はすべてURLセーフBase64でエンコードされています。JWTをデコードするとは、各セグメントのBase64urlエンコードを逆にすることです。詳細はJWTデコードガイドを参照してください。
データURI。 data:image/png;base64,iVBOR...は画像をHTMLまたはCSSに直接インライン化します。画像バイトはBase64でエンコードされ、テキスト属性に表示できるようになります。
メール添付ファイル。 MIME(RFC 2045)はBase64を使用してバイナリ添付ファイルをエンコードします。ランダムな文字の長い文字列を含む.emlファイルを見たことがある場合は、Base64でエンコードされたコンテンツです。
API。 一部のAPIはBase64でエンコードされたバイナリデータを受け取るか返します(ファイルアップロード、画像処理、暗号署名)。現在ではほとんどのAPIがマルチパートフォームデータをサポートしていますが、まだ見られます。
ブラウザでBase64をデコードする方法
最速の方法:
echo 'SGVsbG8gV29ybGQ=' | base64 -d
# → Hello World
URLセーフBase64(JWT、URLパラメータ)の場合は、最初に- → +と_ → /に置き換える必要があります:
echo 'eyJzdWIiOiIxMjM0NSJ9' | tr '_-' '/+' | base64 -d
trの手順を覚えるのが面倒な場合は、ブラウザベースのデコーダーが両方のバリエーションを自動的に処理します。DevSpeedToolsのBase64コンバーターは完全なUTF-8サポートで標準およびURLセーフBase64をエンコード&デコードします。文字列を貼り付けるとデコードされた出力が得られます — サーバー不要、アップロード不要。
よくあるBase64の間違い
- URLで標準Base64を使用。
+と/文字がURL解析を壊します。URLとJWTにはURLセーフBase64を使用してください。 - UTF-8エンコードを忘れる。 Base64は文字ではなくバイトに対して動作します。ASCII以外の文字を含むテキストをエンコードする場合は、まずUTF-8でエンコードしてから、バイトをBase64でエンコードしてください。
- Base64を暗号化として扱う。 これはエンコードです。誰でもデコードできます。追加の保護なしでBase64に秘密を格納しないでください。
- パディングを無視。 パーサーによってはパディング(
=)が必要なものと不要なものがあります。デコードが失敗した場合は、パディングを追加または削除してみてください。
今すぐエンコード&デコード
Base64をエンコードまたはデコードする必要がある場合は、ブラウザベースのツールを使用してください。DevSpeedToolsのBase64コンバーターはUTF-8サポートで標準およびURLセーフBase64を処理します。アップロード不要、サーバー不要 — すべての処理がbtoa()とatob()を使用してブラウザ上で実行されます。