С помощью асимметричного шифрования невозможно зашифровать данные дольше, чем ключевые минусовые отступы. Поскольку для вас 11 байт, я могу заключить, что вы используете дополнение PKCS # 1. То, что вы можете сделать, это попытаться сжать данные, но в зависимости от длины и характера данных он легко может выйти из строя. Другим вариантом является сочетание симметричных блочных шифров (который не имеет никаких ограничений на размер данных) и асимметричное шифрование:
генерации случайных ключа AES
byte[] keyData = new byte[32];
SecureRandom random = new SecureRandom();
random.nextBytes(keyData);
Шифрование данных с AES.
// zero filled input vector
byte[] ivData = new byte[32];
IvParameterSpec iv = new IvParameterSpec(ivData);
SecretKeySpec keySpec = new SecretKeySpec(keyData, "AES");
Cipher aes = Cipher.getInstance("AES/CBC/PKCS5Padding");
aes.init(Cipher.ENCRYPT_MODE, keySpec, iv);
byte[] cipherText = aes.doFinal(data);
ключ Шифрование AES (для AES-256 это 32 байт) с RSA ключа.
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.WRAP_MODE, rsaKeyPair.getPublic());
byte[] wrappedKey = cipher.doFinal(keyData);
Объединенный обернутыйКлючевой текст с шифровым текстом. Может быть сделано только с добавлением одного к другому, но также может использоваться некоторый двоичный формат.