Rozmiar bloku AES to 16 bajtów, więc będziesz potrzebować
- rozmiar danych wejściowych, zaokrąglony w górę do najbliższej wielokrotności 16
- plus, jeśli dane wejściowe są już wielokrotnością 16, jeden rozmiar bloku dla dopełnienia PKCS#5
- plus 16 bajtów dla IV
Pamiętaj, że niekoniecznie dotyczy to innych trybów szyfrowania.
Tak więc na 20 bajtów danych wejściowych potrzebujesz łącznie 48 bajtów. Jednak , kodujesz również wynik base64, co wymaga co najmniej 33% więcej miejsca (tzn. powinieneś przechowywać surowe bajty, jeśli zależy ci na miejscu).
Zawsze powinieneś łączyć przed kodowaniem, w przeciwnym razie często marnujesz miejsce na wiele sekwencji bajtów dopełniających. Jeśli twoje dane wejściowe mają długość 20 bajtów, samo zakodowanie 32-bajtowego zaszyfrowanego tekstu daje 44 bajty, a kodowanie IV daje 24 bajty (oba wymagają uzupełnienia). Konkatenacja przed kodowaniem daje tylko 64 bajty.
Łączenie przed kodowaniem również nie wymaga separatora, ponieważ długość IV jest znana.
Szyfry 1 AEAD, takie jak GCM, są generalnie lepsze niż CBC, ale oczywiście wymagają więcej miejsca do przechowywania skrótu uwierzytelniania.