tk_onoの技術ブログ

技術、思考系

Base64のパディングって不要じゃないか?

Base64といえばバイナリデータを64種類の文字で表現するエンコード方式として有名ですが、3バイトずつ4バイトのASCII文字に変換する際、足りない部分をイコール(=)で埋めますよね。

 

このイコールって不要じゃないか?

 

って思ったんですね。

だって、単に元のデータのビット列を6ビットずつ変換していくだけなのだから、別に結果が4バイトの倍数になっている必要ってないんじゃないか?と。

 

そう思って色々調べてたら,Wikipediaに書いてありました。

From a theoretical point of view, the padding character is not needed, since the number of missing bytes can be calculated from the number of Base64 digits. In some implementations the padding character is mandatory, while for others it is not used. One case where padding characters are required is when multiple Base64 encoded files are concatenated.

http://en.wikipedia.org/wiki/Base64

 

Base64エンコードしたデータを連結した場合、区切り川からなくなるから、そういった場合だけパディングが必要だってことでしょうか。

エンコードしたデータが1つだけの場合はなくてもいいみたいですね。