Base64 エンコーディング

前述のエンコーディング規則で生成されるビット パターンは、一般に印刷可能な文字に対応することはほとんどありません。しかし、エンコードされたデータを印刷可能な形式で表現すると便利なことがあります。これを行うには、Base64 エンコーディングに変換します。

Base64 は、バイナリ データを印刷可能な ASCII 文字、つまりアルファベットの大文字と小文字 (A から Z、a から z)、数字 (0 から 9)、および記号の「+」と「/」に特別なサフィックス コードである記号「=」を使用して変換する方式です。

データの元の長さは 8 ビットの倍数でなければなりません。データを Base64 に変換するために、最初のバイトが 24 ビットのバッファーの最上位の 8 ビット、次のバイトが中間の 8 ビット、3 番目のバイトが最下位の 8 ビットに格納されます。エンコードするバイトが 3 バイト未満の場合は、対応するバッファーのビットが 0 になります。次に、文字列「ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/」への指標として、最上位のビットから一回に 6 ビットずつバッファーが使用されて、選択された各文字が出力されます。

これは、入力データがなくなるまで繰り返されます。最後に 1 バイトまたは 2 バイトのみ入力バイトが残った場合は、出力の最初の 2 文字または 3 文字のみが使用され、出力は 2 つまたは 1 つの「=」文字でそれぞれ埋められます。これにより、再構築されたデータに余分なビットが追加されるのを防ぎます。

Base64 でエンコードされたデータは、元のデータより約 33% 長くなり、通常は一見ランダムな文字列のように見えます。

Base64 エンコーディングの完全な仕様は、RFC 1421 および RFC 2045 で規定されています。

openssl.exe ユーティリティのコマンドの多くでは、通常のバイナリ エンコーディングと Base64 エンコーディングとの間で変換が可能です。