Cifrando los datos de conexión a base de datos en Java y MySql 3 de 3

Después de un buen rato de ausencia escribiré la tercera y ultima parte del proyecto para encriptar los datos de conexión a nuestra Base de Datos.

Esta parte consiste en hacer la interfaz para leer el archivo encriptado generado con la aplicación programada aquí "Cifrando los datos de conexión a base de datos en Java y MySql 2 de 3"

Descarga el proyecto aquí

Vista de la aplicación final



Hay que pegar el archivo .INI (archivo encriptado) que generemos en la raíz del proyecto (PARTE 3) para que pueda ser leído, cuando la conexión es establecida se hacemos una consulta a la Base de Datos para recuperar unos registros que colocaremos en un JComboBox. En el proyecto encontraran una clase llamada DesencriptaArchivo.java la cual se encarga de leer el archivo .INI y desencriptar los datos.

Parte de la clase DesencriptaArchivo.java
 1     /**
 2      * Lee y desencripta los datos de conexión a la base de datos que se encuentran
 3      * en un archivo de texto.
 4      */
 5     public void desencriptaDatos() {
 6         Cipher cifrador = null;
 7 
 8         /* PASO 1: Crear e inicializar clave */
 9         String semilla = "dhjlaSG";
10 
11         // Generamos una clave secreta.
12         SecretKeySpec desKey = new SecretKeySpec(
13                 new String((semilla.trim().concat("62364770")).substring(0, 8))
14                 .getBytes(), "DES");
15         //System.out.println("CLAVE:" + new String(desKey.getEncoded()) + "\n");
16 
17         try {
18             /* PASO 2: Crear cifrador */
19             cifrador = Cipher.getInstance("DES/ECB/PKCS5Padding");
20 
21             // Algoritmo DES
22             // Modo : ECB (Electronic Code Book)
23             // Relleno : PKCS5Padding
24 
25             /* PASO 3: Poner cifrador en modo DESCIFRADO */
26             cifrador.init(Cipher.DECRYPT_MODE, desKey);
27 
28         } catch (NoSuchAlgorithmException noSuchAlgorithmException) {
29         } catch (NoSuchPaddingException noSuchPaddingException) {
30         } catch (InvalidKeyException invalidKeyException) {
31         }
32 
33         /* PASO 4: Leer archivo en el cual estan guardados los datos de conexión. */
34         File f = new File(System.getProperty("user.dir") + nombreArchivo);
35         try {
36             FileReader fr = new FileReader(f);
37             BufferedReader br = new BufferedReader(fr);
38             String fila, cadena;
39             String cadenaDesencriptada[] = new String[6];
40 
41             int i=0;
42             while((fila = br.readLine()) != null) {
43                 //Si el caracter "=" esta en alguna posición de la cadena leida entra al IF.
44                 if(fila.indexOf("=") != -1) {
45                     int inicio = fila.indexOf("=");
46                     int t_cadena = fila.length();
47                     //Toma sólo los datos encriptados de la cadena.
48                     cadena = fila.substring(inicio+1, t_cadena);
49                     byte cadenaDesencriptadaBytes[] = new BASE64Decoder().decodeBuffer(cadena);
50                     cadenaDesencriptada[i] = new String(cifrador.doFinal(cadenaDesencriptadaBytes));
51                 }
52                 i++;
53             }
54 
55             //Se comienza a leer el arreglo apartir de 1 y no de 0 porque la primera
56             //linea del archivo es un comentario "[CONFIGURACION]".
57             this.servidor = cadenaDesencriptada[1];
58             this.puerto = Integer.parseInt(cadenaDesencriptada[2]);
59             this.bd = cadenaDesencriptada[3];
60             this.usuario = cadenaDesencriptada[4];
61             this.contrasena = cadenaDesencriptada[5];            
62             br.close();
63 
64         } catch (FileNotFoundException e) {
65             JOptionPane.showMessageDialog(null, e.getMessage(), "Error de archivo .INI", 
66                     JOptionPane.ERROR_MESSAGE);
67         } catch (Exception e) {
68             JOptionPane.showMessageDialog(null, e.toString(), "Error", 
69                     JOptionPane.ERROR_MESSAGE);
70         }
71     }


Nota: Recordar que es necesario importar a bibliotecas el driver JDBC para el buen funcionamiento del proyecto.

Recuerda: Si te ha servido el contenido del artículo y lo has utilizado, tu comentario de agradecimiento u opinión será bienvenido para continuar mejorando...
 
Codigo java & Diseño web - Netbeans - Jasper Report © 2010 | Volver arriba