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 é:


segunda-feira, 28 de janeiro de 2013

Configurando textos em uma aplicação JavaFX utilizando CSS

Neste post irei mostrar como carregar um arquivo de configuração CSS que será aplicado aos componentes de uma tela JavaFX.

Vamos utilizar o CSS para adicionar um gradiente no fundo da tela, alterar a cor de um texto, acrescentar uma sombra a outro texto. Obtendo no final a tela abaixo:



Vamos ao vídeo


Nossa classe final é:
O arquivo CSS utilizado neste exemplo foi:

sexta-feira, 25 de janeiro de 2013

Novidades com java.nio - Parte IV

Vamos ver uma nova aplicação que permite buscar diretórios a partir de um diretório raiz utilizando duas interfaces:
  • PathMatcher: cria uma verificação baseada em um padrão que pode seguir o mesmo padrão que já utilizados nas linhas de comando do sistema operacional (como por exemplo *.java) ou podemos utilizar expressões regulares.
  • DirectoryStream: retorna um conjunto de diretórios como uma stream que pode ser lida por um iterator.
PathMatcher é implementado em FileSystems.getDefault().getPathMatcher.
DirectoryStream é implementado em Files.newDirectoryStream.

No vídeo vemos como estas classes podem ser utilizadas:



Nossa classe pode ser implementada para ler como argumentos de passagem o diretório e o padrão. Esta nova classe é apresentada abaixo: