Criptografia com RSA. Como liberar mais de 117 bytes?

Prezados, boa tarde.
Quando tento criptografar um arquivo com mais de 117 bytes me deparo com o erro:
javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes

Ok, já li no forúm que ele acontece por que esse algoritmo fica vulnerável com arquivos de tamanho superior a esse, e é aconselhavel ser usado para criptografar chaves…

Porém, o arquivo que quero criptografar é um bloco de notas simples, e precisa ser com Chave pública / privada… ( Meu chefe quer assim).

Enfim, alguem sabe como habilitar a RSA para criptografar acima de 117 bytes? Preciso de uns 600 bytes somente…

Ow caso não seja possível, tem algum outro algoritmo que vocês recomendam que seja Chave privada/publica que libere a criptografia a tamanhos superiores a esse?

Obrigado pela atenção pessoal.

Att,
Diogo Barbosa.

A resposta simples é “não dá”.

A resposta correta é: RSA é feito para criptografar chaves simétricas, e habitualmente os algoritmos simétricos não têm chaves tão grandes assim (usualmente as chaves de algoritmos simétricos têm 8 - DES, 24 - Triple-DES, ou 32 - AES-256, bytes. Nunca 128 bytes ou coisas parecidas).

O que se normalmente faz é gerar uma chave simétrica aleatória, criptografar o dado com ela, e a seguir criptografar a chave com RSA. A seguir, envia-se o dado criptografado com a chave simétrica, e a chave simétrica criptografada com RSA.

Procure uma implementação disso no próprio GUJ.

Amigo, obrigado pela atenção.
Porém conforme eu falei, eu sei sobre isso…porém NECESSITO utilizar um algoritmo assimétrico para a criptografia.

Eu consegui aumentando o tamanho da chave de 1024, para algo em torno de 7168.
Porém a geração da chave demora quase 5 minutos.

Alguem sabe me dizer algum outro algoritmo assimétrico que eu possa utilizar que seja parecido com o RSA, porém seja mais rápido?

Att,
Diogo Barbosa.

Uma maneira boba (e na verdade um pouco insegura, diga-se de passagem) de resolver seu problema é dividir o seu dado em blocos de 64 bytes (por exemplo), e criptografar cada um desses blocos com a mesma chave.