1. Base64 エンコード ルール
Base64 エンコードの考え方は、64 個の基本的な ASCII 文字を使用してデータを再エンコードすることです。エンコードする必要があるデータをバイト配列に分割します。 3 バイトのグループ。 24 ビットのデータを順番に並べて、24 ビットのデータを 6 ビットずつ 4 つのグループに分割します。次に、各グループの最上位ビットの前に 2 つの 0 を追加して 1 バイトを構成します。これにより、3 バイトのデータ グループが 4 バイトに再エンコードされます。エンコードするデータのバイト数が3の整数倍ではない場合、つまりグループ化する際に最後のグループが3バイト足りない場合。このとき、最後のグループには 0 バイトが 1 ~ 2 バイト埋め込まれます。そして、最終的なエンコードが完了したら最後に「=」を1~2個追加します。
例: ABC の BASE64 エンコード:
1. まず、ABC に対応する ASCII コード値を取得します。 A (65) B (66) C (67);
2. 次に、これらの 3 つのバイトのバイナリ値を結合します (01000001)。
4. 次に、6 ビット単位で 4 つのデータ ブロックに分割し、最上位ビットを 2 つの 0 で埋めて、4 バイトのエンコード値 (00010000) (00010100) (00001001) (00000011) を形成します。青い部分は実データ;
5. 次に、これらの 4 バイトのデータを 10 進数に変換して、(16) (20) (9) (3) を取得します。 最後に、BASE64 Basic 文字テーブルで指定された 64 を見つけます。コード文字 (Q) (U) (J) (D)。ここでの値は実際には文字テーブル内のデータのインデックスです。
注: BASE64 文字テーブル: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
2. デコード ルール
デコード プロセスでは、4 バイトを 3 バイトに復元し、さまざまなデータ形式に従ってバイト配列をデータに再配置します。
3. C# での実装
byte[] bytes = Encoding.Default.GetBytes("helloworld"); string str = Convert.ToBase64String(bytes); Console.WriteLine(str); Console.ReadLine(); //base 64 decode bytes = Convert.FromBase64String(str); Console.WriteLine(Encoding.Default.GetString(bytes)); Console.ReadLine();