BASE64は64の任意のバイナリデータによって表される文字です。
#Base64でエンコードするテーブル(標準)
私はこれらの、AZ、AZ、0-9、およびいくつかの他の特殊文字から、我々はすべてのASCIIコードを知っていると信じて文字が示す数だけを持っています。
同様にBase64では、このようなコードを持っています。
64文字の範囲 "AZ"、 "AZ"、 "0-9"、 "+"、 "/" 合計。
我々は、テーブルを見て与え、これは、ASCIIエンコーディングとより、唯一の64よりも簡単です。
インデックスは0から始まっているので、最終的なインデックスが63です。
使用
-
Base64エンコードは、デジタル署名証明書、クッキーコンテンツおよびオンようにコンテンツの小片に適しています。
-
ウェブ上の転送写真:
コード化された画像は、文字がします+
し、/
変更された-
と_
そう64の文字は、エスケープ文字ではありません。(カスタムコードセット)
我々は、HTMLテキストで、2値画像Base64でエンコードされたフォーマットに変換することができるように。
#コーディングプロセス
ここでは、バイナリをBASE64に変換する方法を見てみましょう。
- 3バイト(のバイナリデータの処理、各集合
b1
b2
b2
群4(として分類)、3x8 = 24ビットの合計n1
n2
n3
n4
)、それぞれ正確に6ビット。
我々はそれを知っています、6ビットの大きさは2進数0〜64の小数範囲に変換バックあります
このように、我々は各6ビットbase64エンコード進数との対応テーブルを置くことができます!
プロセスフロー#
- ASCIIコードにすべての文字;
のように:A⇒65 - ASCIIコードは、8ビットのバイナリに変換されます。
例:65⇒0100 0001
- 24ビットのバイナリ三つのグループ(0未満バックフィルでは3個)に正規化し、次いで6の4グループに分け、
として:0100 0001
⇒0100 0001 0000 0000 0000 0000
(8 0の二つの補数)
⇒010000
、010000
、000000
、000000
- 統一された2個の6ビットのバイナリ補数フロント8 0を収集し;
そのような010000
とおり010000
、000000
、、000000
⇒00010000
、00010000
、00000000
、00000000
- 10進数補数バイナリ0の後; 例えば:
、、、⇒16、16、0,000010000
00010000
00000000
00000000
- BASE64は、対応する小数Base64エンコードテーブルから取得コードする;
ような:16、16、0,0
⇒Q、Q、0,0
詳細:
- バッファへのデータの3つのバイトは、24ビット、上位バイトを占有する最初のを持って変換。
- 不十分なデータの3Byte目ワードは、バッファ内のゼロでビットを残り。次いで、6「ビットを取って、それぞれの場合に、選択されたルックアップテーブルに従って符号化された出力として文字に対応する値を選択します。
- 入力データ変換のすべてが完了するまで継続します。
- コード結果の後、最後の残りの2つのデータ入力に加え、「=」であれば、
- 最後に残りの1つの入力データ、符号化結果プラス2「=」であれば、
- あなたが任意のデータを休まない場合、我々はデータ削減の正当性を確保することができますので、私たちは、何も追加しないでください。
8 0の2つのフロントアップので、
したがって、最終的な出力:QQ==
#説明
-
Base64でエンコードされたバイナリデータエンコーディング4バイト3バイトのテキストデータ、長さが33%増加するだろう、エンコードされたテキストデータの利点は、メッセージボディ、ウェブページに直接表示することができます。
-
Base64では、暗号化があまりにも、カスタムコード表ならば、使用することはできませんルックアップテーブルによって符号化方式です。