Base64 エンコードとは何ですか?実バイトを使用した最初の例

Base64 の目的を理解し、Hello が SGVsbG8= に変わる例を確認して、エンコードと暗号化の違いを学びます。

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。