Base64 は、バイナリ データを通常のテキスト文字で表す方法です。画像、ドキュメント、またはテキストはすべてバイトとして表すことができます。システムがテキスト フィールド内のこれらのバイトを必要とする場合、Base64 は受信者が後でデコードできる可逆スペルを提供します。
小さな例
本文 Hello 5 つの ASCII バイトが含まれます。これらのバイトをエンコードすると、 SGVsbG8=。その値をデコードすると同じ 5 バイトが返され、元のテキストとして読み取ることができます。等号はエンコーディングの最後のグループに属します。これは「Hello」という単語の一部ではありません。
Text: Hello
Bytes in Hex: 48 65 6c 6c 6f
Base64: SGVsbG8=
Decoded bytes: 48 65 6c 6c 6f
エンコーダーで例を試し、結果をデコーダーにコピーし、返されたテキストを比較します。次に、漢字または絵文字を試してください。テキストは、最初に UTF-8 などの文字エンコーディングを使用してバイトになる必要があります。 Base64 自体は言語や文字セットを定義しません。
どこで遭遇するか
一般的な例には、JSON のバイナリ フィールド、データ URI のインライン イメージ、および特定のトークンの読み取り可能部分が含まれます。周囲の形式によってコンテキストが提供されます。 Base64 文字列だけでは、元のファイル名、MIME タイプ、文字エンコーディング、またはコンテンツが信頼できるかどうかはわかりません。
データ URI は、次のようなプレフィックスを追加します。 data:image/png;base64,。このプレフィックスはペイロードを表しますが、Base64 アルファベットの一部ではありません。一部のデコーダはラッパーを理解します。他の人はカンマの後の部分のみを期待します。見慣れない文字をランダムに削除するのではなく、適切なツールまたはモードを選択してください。
よくある3つの誤解
まず、Base64 は暗号化ではありません。復号化に秘密は必要ありません。第二に、ファイルは小さくなりません。通常のパディングされた出力は、元のバイトより約 3 分の 1 大きくなります。第三に、すべてのデコード結果がテキストであるわけではありません。画像は、テキスト ボックス内の無意味に見えるバイトに正しくデコードされる場合があります。
デコードが失敗した場合は、元のソース、選択したアルファベット、文字列が切り詰められているかどうかを確認してください。成功したら、適切なビュー (有効なテキスト バイトの場合はテキスト、検査の場合は 16 進数、バイナリ データの場合はファイルのダウンロード) を選択します。詳細な Base64 アルファベットと例は、以下で定義されています。 RFC 4648。