Base64とは何ですか?
Base64は、任意のバイナリデータ(単なるテキスト文字以上のデータ)をプレーンテキストメッセージに変換して、コンピューターネットワーク経由で転送できるようにする方法です。 これはエンコーディングと呼ばれるものです。 base64でエンコードされたメッセージの出力は人間が容易に理解できるものではありませんが、名前の由来である64個の一般的な英語の文字で構成され、さらに65番目の文字が特別な目的で使用されます。
base64の背後にあるアイデアは、電子メールなどのネットワーク通信を通じて単純なテキスト文字以上のものを取得する必要が生じたときに生まれました。 最初の電子メールメッセージは、アメリカの情報交換用標準コード(ASCII)でエンコードされた文字として始まりました。これは、コンピューターで英語のアルファベット文字をディスプレイまたはプリンターのテキストとして表すために使用されるエンコード方法です。 追加のバイナリ情報を取得する必要があるため、新しいエンコード方式が開発されました。
base64エンコード方式は、Multipurpose Internet Mail Extensions(MIME)標準として知られるもので最初に説明されました。 MIME標準では、英語以外の言語で使用されるアルファベットやその他の任意のバイナリデータなど、ASCIIエンコードされていない他の文字もASCIIシーケンスにエンコードして電子メールメッセージで送信できる方法が定義されています。 MIME標準で記述されているエンコードの2つの主要な方法のうち、base64はquoted-printableとして知られる別の役割を共有しています。 quoted-printableメソッドは、制限された94個の印刷可能文字を超えてASCIIを拡張できますが、base64は任意のバイトシーケンスを取得してASCIIシーケンスに変換できます。
Base64は、そうでなければASCII標準に適合しないデータの文字列を取得し、ASCIIに変換する必要があります。 これを行うためのエンコード方式は、データを3バイトのグループに収集し、対応するASCII文字を表す4つの数値に変換するプロセスです。 バイトは8ビットであり、各ビットは1または0で表されるため、3バイトがエンドツーエンドでリンクされ、シーケンス全体が24ビットバッファに入ります。 24の1と0は、6ビットの4つのグループに分割され、それぞれにASCII文字に一致する番号が割り当てられます。
base64はバイナリデータをエンコードできるため、バイトのシーケンスはすべてプロセスを通過できます。 ただし、エンコード用のバイト数が3で割り切れないため、ビットがバッファーに収まる場合にはキャッチがあります。 バイトシーケンスに、たとえば4または5バイトが含まれている場合、バッファを埋めて24ビット全体を構成するには、まだ何かが必要です。 これらの場合、欠落している各バイトは8個の0で表され、その後、完成したエンコードでパディング文字に変換されます。 これは、前述の65番目の文字の由来であり、エンコードされたメッセージでは等号(=)で表されます。 フィラーが必要な場合、エンコーディングの最後にのみ表示されます。
base64は元々、電子メールメッセージを介してバイナリデータを送信するために考案されましたが、その使用はMIME以外の多くの分野で使用されています。 このような非常に一般的な使用法の1つは、Webデータベース上でアプリケーションを使用してデータをエンコードし、Webフォームで統一リソースロケーター(URL)を作成することです。 拡張マークアップ言語(XML)は、小さな画像などのバイナリデータをXMLドキュメントに含めることができるバリアントも使用します。 暗号化方法や、パスワードの非表示など、その他のセキュリティ関連のテクニックには、他のバリエーションがあります。