RSA + javax.crypto.IllegalBlockSizeException

1 resposta
vivi_grieco

Olá,
estou tentando criptografar uma quantidade de dados utilizando RSA.
para alguns dados, criptografa normalmente, porém, quando tento criptografar um dado grande, aparece esse erro:

javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
como posso contornar isso? :roll:

1 Resposta

T

A resposta simples é “não pode”.

A resposta mais elaborada é: o RSA trabalha com dados cujo tamanho é inferior ao tamanho da chave, menos alguma coisa, que depende um pouco dos parâmetros usados (expoente e outras coisas). Por exemplo, para uma chave de 1024 bits (128 bytes), você não pode criptografar mais que 117 bytes.
Tradicionalmente você usa um algoritmo simétrico (como AES ou Triple-DES para criptografar seus dados), e então criptografa a chave simétrica com RSA. Como o AES tem chave de 256 bits no máximo (isso dá 32 bytes) e o Triple-DES usa chave de 24 bytes, então você pode criptografar a chave com RSA sem problemas.

Criado 6 de maio de 2009
Ultima resposta 6 de mai. de 2009
Respostas 1
Participantes 2