BASE64の仕組み
base64とは
base64とは, 64種類の印字可能な英数字(a-z, A-Z, 0-9, +, /)のみを用いて, マルチバイト文字やバイナリデータをエンコードする方式です. SMTPという電子メールを送信するときに使用されるプロトコルでは, ASCIIコードという7bitで表現される英数字しか送信することができなかったので, 画像データなどの添付データをそのまま送信することができませんでした. そのため, すべてのデータを英数字で表すMIME(Multipurpose Internet Mail Extensions)という規格が登場し、その中でbase64というデータの変換方法が定められました.
base64でエンコードした結果, データ量は約4/3倍になります. MIMEの基準では76文字ごとに改行コードが入るため、この分の2バイトを計算に入れるとデータ量は約137%となることがわかっています.
base64の仕組み
(1) 文字列をasciiコードに変換し, それを2進数表現する.
"ABCD" => "01000001 01000010 01000011 01000100"
(2) 6ビットずつに分割する.
"01000001 01000010 01000011 01000100" => "010000 010100 001001 000011 010001 00"
(3) 余ったビットは0でパディングする.
"010000 010100 001001 000011 010001 00" => "010000 010100 001001 000011 010001 000000"
(4) 以下の変換表(引用: https://ja.wikipedia.org/wiki/Base64)から, 印字可能文字に4文字ずつエンコードする.
"010000 010100 001001 000011 010001 000000" => "QUJD RA"
(5) 余った分は=でパディング
"QUJD RA" => "QUJD RA=="
(6)完成.
"QUJD RA==" => QUJDRA==