base64のまとめ

base64とはすべてのデータをアルファベット(a-z,A-Z)と数字(0~9)、一部の記号(+,/)で表す変換方式である。 データの長さを揃えるのに、空白に詰める無意味なデータ(パディング)として=を使用する。 URLや正規表現の中では+,-は特別な意味を持つことがあるので-,_が用いられることもある。

電子メールをやりとりするプロトコルSMTPでは、ASCIIという7bitで表現される英数字しか送受信できなかった。 つまり画像や音声、バイナリデータの送受信はできなかった。 MIME(Multipurpose Internet Mail Extensions)という規格が登場し、その中でbase64が定められた。 MIMEに則ってエンコード、デコードすることで画像や音声、バイナリデータの送受信可能となった。

変換方法まとめ

  1. ファイルの内容(文字列)をbyteに変換して、*1
  2. 6bitずつに分けて、*2
  3. 最後のかたまりが6bitに満たない場合はパディングに0を使用して、*3
  4. base64の変換表をもとに64文字のいずれかに変換して、*4
  5. 変換後の文字列を4文字ずつ分けて、*5
  6. 最後のかたまりが4文字に満たない場合はパディングに=を使用する*6

*1: "文字a" => 11100110 10010110 10000111 11100101 10101101 10010111 01100001

*2:111001 101001 011010 000111 111001 011010 110110 010111 011000 01

*3:111001 101001 011010 000111 111001 011010 110110 010111 011000 010000

*4:5 p a H 5 a 2 X Y Q

*5:5paH 5a2X YQ

*6:5paH 5a2X YQ==