Criptografia Rijndael com chave própria

Ae galera…
eu to tentando fazer uma criptografia Rijndael em java com chave própria, mas sem sucesso.
Googlei pacas, mas ainda to sem respostas de como fazer isso funcionar.

  • Ja modifiquei os jars de politicas de segurança (JCE)
  • Já tentei usar o PBE sem muito sucesso também. :’( … não consegui entender direito como utilizar…
  • Peguei os jars bouncecastle também…

O problema é que sempre estoura uma exceção dizendo que a chave não possui um tamanho válido.

Alguém ae pode pelo menos me mostrar uma direção, para que eu possa chegar a uma solução?

vlw ae !!

Se você estiver falando do algoritmo que ganhou o processo para definição do AES, pelo que sei só dá para usar chaves de tamanhos 128, 192, ou 256 bits, que trocando para bytes, viram 16, 24 ou 32 bytes.

Inté.

O que é “chave própria”? Quiquéisso?

Não confunda “chaves” com “senhas”. Uma senha (algo que tem um número indefinido de caracteres) pode ser processada para gerar uma chave (que é o caso do algoritmo PBE que você mencionou).

E em criptografia, tome cuidado com arrays de bytes, que não podem ser misturados e/ou convertidos diretamente para Strings.

Uma chave que não seja uma KeyGenerator.

Algo para me ajudar com isso ?

KWill…
então eu fico restrito a utilizar uma chave de no máximo 32 bytes ?
No meu caso aqui eu tenho que usar uma chave utilizada por outros sistemas … não existe uma forma de fazer isso ?

Dê um exemplo dessa tal “chave que é usada por vários sistemas”.

CHAVE = “EtaEtaEtaBrasileiroQuer$%¨&*”;

é uma string

Certo, isso em criptografia não é uma “chave” e sim uma “senha”. Portanto, você tem de transformar essa string em um array de bytes, usando um algoritmo como por exemplo o usado pelo PBE (Password-Based Encryption).

Veja este post do Thingol: http://www.guj.com.br/posts/list/35256.java#187467

Onde está “EAlGeEen3/m8/YkO” use a tal senha, que é no seu caso “EtaEtaEtaBrasileiroQuer$%¨&”, e onde está “3p6/Lsbp+MIK8zqK” use os dados que você deseja criptografar.

O algoritmo do exemplo é o PBEWithMD5AndDES , mas há outros algoritmos . Veja a lista completa em

http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html

KWill…
então eu fico restrito a utilizar uma chave de no máximo 32 bytes ?
No meu caso aqui eu tenho que usar uma chave utilizada por outros sistemas … não existe uma forma de fazer isso ?[/quote]
Não necessariamente, o que pode ser feito é usar alguma instância da classe “MessageDigest” cuja saída seja em 16, 24 ou 32 bytes e aí usar essa saída da instância da classe “MessageDigest” como “chave”, que é mais ou menos se não me engano o que os métodos de criptografia “PBE” (Password-Based Encryption) fazem.
Trocando em miúdos, transforme essa sua senha que seria uma String numa chave de criptografia usando algum algoritmo de hash cujo tamanho de saída seja compatível com o tamanho de chave necessário do algoritmo de criptografia a ser utilizado.

Inté.