Criptografia Assimétrica com RSA

by Katherine Akey / from beautifuldecay.com

É uma tema que já estava para postar tem um tempo, desde um trabalho que fiz ano passado na faculdade. Irei abordar a criptografia do tipo RSA, mas o procedimento é o mesmo para os demais tipos de criptografia assimétrica, mudando só logicamente a identificação de qual criptografia estamos trabalhando. Temos que ter em mente a classe KeyPairGenerator, que irá gerar uma instância de KeyPair que é a representação de um par de chaves (uma privada e uma pública). Do KeyPair podemos extrair a instância de PrivateKey e a instância de PublicKey, que no caso nem preciso explicar quem são.

Vamos começar então criando a instância de KeyPair através do KeyPairGenerator.

Esse código exemplifica como criar um par de chaves (Privada e Pública) para criptografia do tipo RSA. Perceba que criamos um gerador de par de chaves do tipo “RSA” (poderíamos usar por exemplo o “DH”) e inicializarmos esse gerador com 512, que significa que o tamanho de nossas chave será de 512 bits, o mínimo para esse tipo de criptografia. Logo após isso,  temos o comando onde o gerador criar uma instância de KeyPair ou par de chaves.

Mas como capturo a chave pública e privada de uma instância de KeyPair? Simples:

O próximo passo é capturar a instância de Cipher, que irá realizar a criptografia e decriptografia do que quisermos. A captura de Cipher é muito similar a do KeyPairGenerator, já que ambos são singleton:

Novamente, poderíamos usar por exemplo o “DH” ao invés de “RSA”. Logo em seguida, se quisermos fazer uma criptografia inicializaremos o Cipher informando o modo Cipher.ENCRYPT_MODE e a nossa instância de PublicKey. Se formos realizar o procedimento inverso, decriptografia, informaremos o modo Cipher.DECRYPT_MODE e a instância de nossa PrivateKey.

Para realizar o modo que informamos, criptografar ou decriptografar, basta chamarmos o método doFinal() da instância de Cipher, que recebe um vetor de bytes e retorna um vetor de bytes.

Segue abaixo uma classe completa para se trabalhar com criptografia RSA, usando as linhas de código explicadas acima.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s