暗号化するとファイルサイズはどうなる?

以前、このMLの中で、暗号化する場合のファイル名の長さに制限がかかることを述べましたが、それよりも、ファイルサイズを気にしている方が意外と多いようです。また、zip暗号のように圧縮されるのではないのかと思われる方もいます。実際はどうなのでしょうか?

ここで紹介させていただいている透過型暗号化というものは、ブロック暗号という方式を採用しています。アルゴリズム的にはデータをある固定サイズに分割してブロックごとに暗号化します。この場合、暗号化する前と後では全くサイズは変わりません。だから「サイズは変わらない」と言いたいところなのですが、実際にはサイズが少し増加してしまいます。というのは、サイズが増加する主な要因が二つあるのです。

それは「パディング処理」「暗号化情報の保存」です。

ブロック暗号では固定サイズでデータを分割すると言いましたが、割り切れない場合は、割り切れるようにダミーデータを付加します。これをパディングといいます。このパディングが起きるとその分だけサイズが増えることになります。

また、暗号化されたデータをどのように復号化するのかをどこかに書いておかないと元に戻せません。そのような暗号化情報をファイルのヘッダとして保存する場合もサイズが増加します。

両方ともそんなに大きなサイズではないのですが、ファイルサイズで動作が変わるようなアプリケーションでは気をつけていただければと思います。