· 6 years ago · Feb 15, 2019, 04:12 PM
1/*
2 * Cript.java
3 * Created on 22 de Outubro de 2007, 21:26
4 */
5package classes;
6// Imports necessarios
7import java.security.*;
8import javax.crypto.*;
9import java.io.*;
10/**
11 * Classe que criptografa e descriptografa uma String
12 * @version 1.0
13 * @author Anderson
14 */
15public class Kriptonita {
16 // Variaveis privadas da classe
17 private Cipher ecipher;
18 private Cipher dcipher;
19 /**
20 * Construtor da classe que cria uma chave criptografada do tipo DES
21 * @version 1.0
22 * @author Anderson
23 */
24 public Kriptonita() {
25 try {
26 SecretKey chave = KeyGenerator.getInstance("DES").generateKey();
27 ecipher = Cipher.getInstance("DES");
28 dcipher = Cipher.getInstance("DES");
29 ecipher.init(Cipher.ENCRYPT_MODE, chave);
30 dcipher.init(Cipher.DECRYPT_MODE, chave);
31 } catch (InvalidKeyException ex) {
32 ex.printStackTrace();
33 } catch (NoSuchPaddingException ex) {
34 ex.printStackTrace();
35 } catch (NoSuchAlgorithmException ex) {
36 ex.printStackTrace();
37 }
38 }
39 /**
40 * Metodo que faz a criptografia de uma String em 64 bits
41 * @param str Pega a string que sera criptograda
42 * @return Retorna a String criptografada
43 * @version 1.0
44 * @author Anderson
45 */
46 public String encriptar(String str) {
47 try {
48 // Codifica a String usando UTF-8
49 byte[] utf8 = str.getBytes("UTF-8");
50 // Encripta
51 byte[] enc = ecipher.doFinal(utf8);
52 // Codifica os bytes usando Base64
53 return new sun.misc.BASE64Encoder().encode(enc);
54 } catch (javax.crypto.BadPaddingException ex) {
55 ex.printStackTrace();
56 } catch (IllegalBlockSizeException ex) {
57 ex.printStackTrace();
58 } catch (UnsupportedEncodingException ex) {
59 ex.printStackTrace();
60 } catch (java.io.IOException ex) {
61 ex.printStackTrace();
62 }
63 // Caso nao consiga, retorna null
64 return null;
65 }
66 /**
67 * Metodo que decriptografa uma String que foi criptografada em 64 bits
68 * @param str Pega a String criptografada para volta-la ao formato UTF-8
69 * @return Retorna a String decriptografa no formato UTF-8
70 * @version 1.0
71 * @author Anderson
72 */
73 public String decriptar(String str) {
74 try {
75 // Decodifica na base64 os bytes capturados
76 byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);
77 // Decripta
78 byte[] utf8 = dcipher.doFinal(dec);
79 // Decodifica usando UTF-8
80 return new String(utf8, "UTF-8");
81 } catch (javax.crypto.BadPaddingException ex) {
82 ex.printStackTrace();
83 } catch (IllegalBlockSizeException ex) {
84 ex.printStackTrace();
85 } catch (UnsupportedEncodingException ex) {
86 ex.printStackTrace();
87 } catch (java.io.IOException ex) {
88 ex.printStackTrace();
89 }
90 // Caso nao consiga, retorna null
91 return null;
92 }
93}