Você não pode criptografar um bloco maior que o tamanho da chave, usando RSA. No seu caso, o tamanho da chave é de alguns poucos bits, e você quer criptografar um bloco de 100 bytes (800 bits).
T
Tiago_Borghi
O tamanho máximo do bloco é de 16 bytes, se quiser cifrar um bloco maior terá que fazer por partes. Divida os 100 bytes em blocos de 16 e cifre-os, concatenando o resultado.
Na hora do decrypt terá que fazer a mesma coisa :lol:
…mas não deu certo (mesmo com array de bytes de 0x03) o cipherText se torna um array de zeros… :?
E
entanglement
A criptografia RSA não é destinada a ser usada para criptografar coisas, apenas chaves.
Não tente criptografar 100 bytes se sua chave RSA tiver menos de 800 bits.
E essa história de criptografar por blocos, no caso da RSA, não é adequado porque isso expõe uma vulnerabilidade no algoritmo quando uma mesma chave RSA é usada para criptografar vários blocos. Nunca se usa apenas a RSA sozinha; ela deve ser sempre combinada com um algoritmo simétrico como o AES ou o Triple-DES.
O que se costuma fazer é criar uma chave AES (por exemplo), que tem sempre 128/192/256 bits, e criptografar essa chave usando RSA.
Então você criptografa o seu texto original (aquele trambolho que tem 100 ou mais bytes) com essa chave AES, e criptografa a chave AES com a chave RSA.
wellington7
entanglement:
A criptografia RSA não é destinada a ser usada para criptografar coisas, apenas chaves.
Não tente criptografar 100 bytes se sua chave RSA tiver menos de 800 bits.
E essa história de criptografar por blocos, no caso da RSA, não é adequado porque isso expõe uma vulnerabilidade no algoritmo quando uma mesma chave RSA é usada para criptografar vários blocos. Nunca se usa apenas a RSA sozinha; ela deve ser sempre combinada com um algoritmo simétrico como o AES ou o Triple-DES.
O que se costuma fazer é criar uma chave AES (por exemplo), que tem sempre 128/192/256 bits, e criptografar essa chave usando RSA.
Então você criptografa o seu texto original (aquele trambolho que tem 100 ou mais bytes) com essa chave AES, e criptografa a chave AES com a chave RSA.
É o que vou fazer, estou usando AES e vou criptografar a cheve usando RSA. Mas o número de chaves vai variar, posso criptografar apenas 1 chave por vez? E se for o caso, o tamanho das chaves AES é constante? A aplicação nunca vai falhar por estourar o tamanho do bloco RSA?
E
entanglement
Eu recomendo criptografar uma chave de cada vez.
O tamanho de uma chave AES pode ser: 128, 192 ou 256 bits. É só questão de escolher (e lembrar que o Java, se você não alterar um arquivo na JRE, só aceita chaves de 128 bits no máximo. Veja em: