AESのブロックサイズは16バイトなので、
が必要です。- 入力のサイズ。16の最も近い倍数に切り上げられます
- さらに、入力がすでに16の倍数である場合は、PKCS#5パディングの1ブロックサイズ
- さらにIV用に16バイト
これは必ずしも他の暗号モードに適用されるわけではないことに注意してください。
したがって、20バイトの入力の場合、合計48バイトが必要になります。 ただし 、結果をbase64でエンコードしているため、少なくとも33%多くのスペースが必要です(つまり、スペースを気にする場合は、生のバイトを保存する必要があります)。
エンコードする前に常に連結する必要があります。そうしないと、複数のパディングバイトシーケンスでスペースを浪費することがよくあります。入力の長さが20バイトの場合、32バイトの暗号文をエンコードすると44バイトになり、IVをエンコードすると24バイトになります(どちらもパディングが必要です)。 エンコード前に連結すると、64バイトしか生成されません。
IVの長さがわかっているため、エンコード前に連結する場合も区切り文字は必要ありません。
1 GCMなどのAEAD暗号は、一般的にCBCよりも推奨されますが、認証ハッシュを格納するためにより多くのスペースが必要になることは明らかです。