Base64とは
バイナリーデータをテキストデータに変換するもの、テキストしか扱えない時に使う。Eメールとかで使われる。
アルゴリズム
- バイト列を3バイトごとに区切る(24ビット)
- この24ビットを6ビットごとに区切る(6ビットが4つ)
- この6ビットを64個の文字にマップする。
- 最後のうまく区切れないところは=でパディングする
具体例、helloをBASE64エンコード
文字列helloを16進バイトストリームにすると、68 65 6C 6C 6F、
2進だと01101000 01100101 01101100 01101100 01101111
これを6ビットごとに区切ると、
1 2 3 4 5 6 7 |
011010 000110 010101 101100 011011 000110 1111 |
これを10進、16進に直すと、
1 2 3 4 5 6 7 |
26 1A 06 06 21 15 44 2C 27 1B 06 06 60 3C(2ビット不足を0で補う) |
これをマップされた文字にすると
1 2 3 4 5 6 7 |
a G V s b G 8 |
最後に2ビットの0を足したので=を足して
aGVsbG8=
が完成。