base64ライブラリ

1.base64とは
 base64とは、64進数を意味する言葉で、すべてのデータをアルファベット(a~z, A~z)と数字(0~9)、一部の記号(+,/)の64文字で表すエンコード方式である。
 Eメールを送るためのプロトコルSMTPでは、ASCIIコードの7bitで表現される英数字しか送ることができなかったが、Eメールを使って画像や音声などのデータを扱えるようにするため、すべてのデータを英数字で表すMIME(Multipurpose Internet Mail Extensions)という規格が登場し、その中でbase64というデータの変換方法が定められた。
 MIMEは、SMTPに加えて設定されるメッセージ送信標準のひとつで、Eメールに画像、動画、音声などのファイルを添付できる機能。
 MIMEタイプにはファイルの種類を表わす形式で、
 ・text/plain:テキストファイル(中身が文字だけのファイル)
 ・text/html:HTMLファイル(ホームページのファイル)
 ・image/png:PNGファイル(PNG形式の画像ファイル)
がある。
 メールではContent-Typeの中で「Content-Type: text/plain; charset=iso-2022-jp」
のように指定する。

2.base64の変換
 base64への変換は下記の規則で行う。
・エンコードしたいファイルのバイナリデータを6bitずつ取り出す(足りない分は0を追加する)。
・6ビット列をbase64の変換表(下表)で文字(英数字)に変換する。
・4文字ずつに分けて、4文字に満たない場合は=を追加する。

 変換したい文字列”ABCD”(ASCIIコード)をbase64に変換する例
(1)変更したい文字列をバイナリ(2進数)に変換する
 0x41, 0x42, 0x43, 0x44(16進数)
 0100 0001, 0100 0010, 0100 0011, 0100 0100(2進数)
(2)バイナリを6ビットづつに分割する
 010000, 010100, 001001, 000011, 010001, 00
(3)最後の2ビットが余るので、6ビットになるように0を追加する
 010000, 010100, 001001, 000011, 010001, 000000
(4)base64変換表よりビット列を文字に変換する
 Q U J D R A
(5)4文字に分けた時に、2文字分足りないので=を追加する
 QUJD RA==

2.base64ライブラリ(C++)
(1)base64ライブラリのダウンロード
 https://ja.osdn.net/projects/clxcpp/releases/51423
clx_0.18.2.tar.bz2

(2)ライブラリの解凍
# tar xvfj clx_0.18.2.tar.bz2
clx配下に下記のファイルが展開される

(3)エンコードとデコードのサンプルアプリ作成
ex01.cpp

(4)サンプルのコンパイルと実行
# g++ -o ex01 ex01.cpp
# ./ex01

The end