Top > MyPage
 

TripleDESUtilを用いて暗号化した際のサイズの変化について

はじめに

TripleDESUtilを用いて暗号化した際はその前後でデータサイズが変化する。どの程度変わるかを説明する。

3DES暗号化の際のサイズ変化

3DESの暗号化は8byteでデータを区切って暗号化するため、対象のサイズがn*8byteになっていない場合は空白をpaddingして足りない分を補ってから変換する。

であるので、例えばchikkunという文字列を暗号化しようとすると、7byteしかないため暗号化前に空白がひとつ追加されて、元のサイズよりも1byte大きくなる。ここで注意したいのは元データがちょうど8の倍数をとるサイズだった場合である。この場合は空白が8byte分追加されるので注意してほしい。例えばchikkun1のような場合はサイズが元の倍になるのである。

BASE64エンコードする際のサイズの変化

3DESで暗号化した後のデータは文字としての意味を成さない2進数の並びなので、文字として表示できるようにBASE64エンコードする。

まず、対象のデータを6bit区切りにする。chikkunを3DESで暗号化すると8byte(64bit)になるので6bit区切りにすると4bit余る(2bit足りない)。足りない分は0でpaddingされる(66bitになる)。

変換ルールに従って6bitが1byte文字に変換される。このとき4文字分ずつというルールがあるので66bitのデータを変換すると1文字足りなくなる。足りない分は=でpaddingされる。

結局、chikkunをTripleDESUtilを用いて変換するとデータサイズが7byteから12byteに変化するということになる。暗号化の鍵を換えてもサイズはこのようになる。

chikunを暗号化した場合も12byteの文字列になる。chikkun1を暗号化した場合は24byteの文字列になる。3DESで変換すると必ず8の倍数byteになるので、それをBASE64変換した結果、必ず12の倍数byteになるのだ。