Это зависит от алгоритма шифрования, режима и размера блока.
Например, AES использует фиксированный размер блока 128 бит (16 байтов), режимы CBC и ECB будут возвращать фиксированную длину, эта длина будетбыть кратным 128.
Если вы используете режим ECB и длина входного массива байтов равна 10, то для завершения блока необходимо добавить 6 байтов заполнения.
Существует много способовчтобы дополнить блок, вы можете использовать PKCS5 или PKCS7.
В Java вы можете использовать библиотеку Bouncy Castle https://www.bouncycastle.org/ Убедитесь, что вы используете безопасный IV и производный ключ шифрования
В следующем примере обрабатывается заполнениепо библиотеке
public byte[] genIV() {
byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);
return iv;
}
public byte[] encrypt(byte[] plaintext, byte[] secretKey, byte[] iv) throws NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException, InvalidKeyException {
Cipher in = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
Key key = new SecretKeySpec(secretKey, "AES");
in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
return in.doFinal(plaintext);
}
public byte[] decrypt(byte[] ciphertext, byte[] secretKey, byte[] iv) throws InvalidAlgorithmParameterException, InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, BadPaddingException, IllegalBlockSizeException {
Key key = new SecretKeySpec(secretKey, "AES");
Cipher out = Cipher.getInstance("AES/ECB/PKCS5Padding", "BC");
out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
return out.doFinal(ciphertext);
}
Имейте в виду, что каждый символ в строке, в зависимости от кодировки, имеет длину не менее 8 бит, в вашем примере "abcdef" по крайней мере 6длина байта