Criptografia com RSA. Como liberar mais de 117 bytes?

3 respostas
InsaneChess

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.

3 Respostas

E

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.

InsaneChess

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.

E

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.

Criado 22 de julho de 2011
Ultima resposta 23 de jul. de 2011
Respostas 3
Participantes 2