Hoje falaremos sobre criptografia. Há muitas histórias boas sobre isso e até filmes que mostram formas mirabolantes de criptografar e descriptografar dados. Aqui vamos aprender o básico sobre essa arte de esconder os dados sigilosos dos nossos sistemas.
http://www.feltex.com.*********/felix/wp-content/uploads/2014/11/Criptografia.png
Código de exemplo
No exemplo abaixo mostramos como criptografar e depois descriptografar um texto qualquer.
Código:
package JCEEncryption;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class JCEEncryption {
public static void main(String[] argv) {
try {
KeyGenerator gerador = KeyGenerator.getInstance("DES");
SecretKey chaveDES = gerador.generateKey();
Cipher desCipher;
//Criação do cipher que conterá os objetos de criptografia
desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// Iniciando cipher para criptografia
desCipher.init(Cipher.ENCRYPT_MODE, chaveDES);
//Dados a serem cripografados
byte[] mensagemOriginal = "Mensagem oculta!".getBytes();
System.out.println("Conteúdo byte: " + mensagemOriginal);
System.out.println("Conteúdo texto: " + new String(mensagemOriginal));
// Excriptando os dados
byte[] mensagemCriptografada = desCipher.doFinal(mensagemOriginal);
System.out.println("Conteúdo criptografado : " + mensagemCriptografada);
// Iniciando o chipher para realizar a descriptografia
desCipher.init(Cipher.DECRYPT_MODE, chaveDES);
// Texto a ser descriptografado
byte[] textoDescriptografado = desCipher.doFinal(mensagemCriptografada);
System.out.println("Texto Descriptografado: " + new String(textoDescriptografado));
} catch (NoSuchAlgorithmException e) {
System.err.println("Não foi possível localizar o algorítmo de criptografia!" + e.getMessage());
} catch (NoSuchPaddingException e) {
System.err.println("O mecanismo de preenchimento solicitado não existe no ambiente (Sistema Operacional)!" + e.getMessage());
} catch (InvalidKeyException e) {
System.err.println("Chave inválida!" + e.getMessage());
} catch (IllegalBlockSizeException e) {
System.err.println("Tamanho do bloco da mensagem inválido!" + e.getMessage());
} catch (BadPaddingException e) {
System.err.println("Preenchimento incorreto de dados!" + e.getMessage());
}
}
}
Resultado:
Conclusão
Então amigos. Essa é uma das formas que podemos criptografar dados. Em alguns sistemas existem dados sensíveis que precisamos armazenar em bases de dados e depois devemos recuperá-los e exibir para os usuários. Esta é uma das formas! E por hoje é só! Vida que segue.
http://www.feltex.com.*********/felix/wp-content/uploads/2014/11/Criptografia.png
Código de exemplo
No exemplo abaixo mostramos como criptografar e depois descriptografar um texto qualquer.
Código:
package JCEEncryption;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class JCEEncryption {
public static void main(String[] argv) {
try {
KeyGenerator gerador = KeyGenerator.getInstance("DES");
SecretKey chaveDES = gerador.generateKey();
Cipher desCipher;
//Criação do cipher que conterá os objetos de criptografia
desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// Iniciando cipher para criptografia
desCipher.init(Cipher.ENCRYPT_MODE, chaveDES);
//Dados a serem cripografados
byte[] mensagemOriginal = "Mensagem oculta!".getBytes();
System.out.println("Conteúdo byte: " + mensagemOriginal);
System.out.println("Conteúdo texto: " + new String(mensagemOriginal));
// Excriptando os dados
byte[] mensagemCriptografada = desCipher.doFinal(mensagemOriginal);
System.out.println("Conteúdo criptografado : " + mensagemCriptografada);
// Iniciando o chipher para realizar a descriptografia
desCipher.init(Cipher.DECRYPT_MODE, chaveDES);
// Texto a ser descriptografado
byte[] textoDescriptografado = desCipher.doFinal(mensagemCriptografada);
System.out.println("Texto Descriptografado: " + new String(textoDescriptografado));
} catch (NoSuchAlgorithmException e) {
System.err.println("Não foi possível localizar o algorítmo de criptografia!" + e.getMessage());
} catch (NoSuchPaddingException e) {
System.err.println("O mecanismo de preenchimento solicitado não existe no ambiente (Sistema Operacional)!" + e.getMessage());
} catch (InvalidKeyException e) {
System.err.println("Chave inválida!" + e.getMessage());
} catch (IllegalBlockSizeException e) {
System.err.println("Tamanho do bloco da mensagem inválido!" + e.getMessage());
} catch (BadPaddingException e) {
System.err.println("Preenchimento incorreto de dados!" + e.getMessage());
}
}
}
Resultado:
Conclusão
Então amigos. Essa é uma das formas que podemos criptografar dados. Em alguns sistemas existem dados sensíveis que precisamos armazenar em bases de dados e depois devemos recuperá-los e exibir para os usuários. Esta é uma das formas! E por hoje é só! Vida que segue.