Blockstorleken för AES är 16 byte, så du behöver
- storleken på din inmatning, avrundad uppåt till närmaste multipel av 16
- plus, om indata redan är en multipel av 16, en blockstorlek för PKCS#5-utfyllnaden
- plus 16 byte för IV
Observera att detta inte nödvändigtvis gäller för andra chifferlägen.
Så för 20 byte indata behöver du totalt 48 byte. Men , du base64-kodar också resultatet, vilket kräver minst 33 % mer utrymme (dvs. du bör lagra råbyte om du bryr dig om utrymme).
Du bör alltid sammanfoga före kodning, annars slösar du ofta utrymme med flera utfyllnadsbytesekvenser. Om din inmatning är 20 byte lång, ger kodning av chiffertexten på 32 byte i sig 44 byte, och kodning av IV ger 24 byte (båda behöver utfyllnad). Konkatenering före kodning ger endast 64 byte.
Sammanfogning före kodning kräver inte heller avgränsaren, eftersom längden på IV är känd.
1 AEAD-chiffer, som GCM, är i allmänhet att föredra framför CBC, men kräver mer utrymme för att lagra autentiserings-hash, så klart.