quinta-feira, 31 de janeiro de 2013

Como criptografar ou descriptografar um texto com AES

As redes como a Internet não fornecem um meio de comunicação seguro entre as pessoas. Esta é suscetível de ser lida ou modificada por terceiros não autorizados. A criptografia ajuda a proteger os dados de exibição, fornece maneiras de detectar se os dados foram alterados e ajuda a fornecer um meio seguro de comunicação sobre os canais não seguros.

Por exemplo, os dados podem ser criptografados usando um algoritmo criptográfico, transmitido em um estado criptografado e posteriormente ser descriptografado pelo destinatário. Se outra pessoa intercepta os dados criptografados, será difícil entender o que foi transmitido. O Padrão de Criptografia Avançada (AES) é uma forma de criptografia adotada pelo governo dos Estados Unidos em 2001. O AES fornece uma criptografia mais segura do que seu predecessor (padrão NIST), o Padrão de Criptografia de Dados (DES) ou mesmo 3DES.

É este padrão que mostrarei neste post. Para que esta criptografia funcione, o padrão AES pressupõe que as duas partes (emissor e receptor da mensagem/arquivo/etc) concordaram em uma chave e IV, e comunicaram seus valores. O IV não é considerado confidencial e pode ser transmitido em texto não criptografado com a mensagem.

O procedimento para criptografar ou descriptografar consiste basicamente em 3 passos:
1) conseguir a classe que faz a criptografia via:

        Cipher c = Cipher.getInstance(ALGORITMO); // vamos precisar da mesma string para decriptar

2) inicializar a classe com a chave desejada, com o IV desejado e informar se irá criptografar (Cipher.ENCRYPT_MODE) ou descriptografar (Cipher.DECRYPT_MODE)

        c.init(Cipher.ENCRYPT_MODE, chaveAES, ivps);
        c.init(Cipher.DECRYPT_MODE, chaveAES, ivps);

3) executar o método

        byte [] msg = c.doFinal(textoComoArrayDeBytes);

Vamos ver a construção da nossa classe:

O vídeo com toda a construção do nosso exemplo é:


Um comentário:

  1. Valew Henrique!!! Estou desenvolvendo meu TCC e se trata da comunicação Android para microcontrolador Arduino via WiFi, essa parte de criptografia será muito util pra mim. Vou seguir seu exemplo.

    ResponderExcluir