Claves en un Sistema

Cuando creamos un sistema siempre debemos tener un lugar para ubicar a los usuarios y sus respectivas claves de acceso, existen muchas formas de hacer esto, desde un archivo de texto hasta usar las mismas herramientas que nos ofrece nuestro SGBD, bien sea PostgresSQL, MySQL, SQLServer, etc, etc, etc... Para crear usuarios en MySQL podemos ver la entrada Crear Usuario en MySQL, y para eliminarlos podemos ver la entrada Eliminar Usuario en MySQL.

   A todo esto, los usuarios dentro de nuestro gestor de base de datos (SGBD) cifra la contraseña, de forma que no podemos saber a simple vista cual es la clave de cada usuario y entrar a su cuenta para modificar permisos. Pero entonces ¿Qué para si los datos de acceso (login) necesitamos almacenarlos en una tabla?, muy rara es la ocasión en que esto debe ser así, pero la razón del porque se hace en una tabla es para que nuestro sistema sea portable, es decir, que maneje distintos SGBD. Entonces tenemos la tabla de usuarios, donde tendremos: "usuario" y "clave", si hacemos una consulta simple podemos ver a simple vista las claves de cada usuario, en bandeja de plata.

   Si tenemos en nuestro sistema este mecanismo lo ideal sería cifrar esa clave mediante un algoritmo de encriptación y guardar el resultado en un campo de texto plano, con codificación UTF-8 que es estandar (por decirlo así). De esta forma aseguramos la integridad del sistema como la seguridad a nivel de acceso para los usuarios.... Entonces, ¿Cómo podemos hacer esto?, como me gusta Java y tengo a la mano MySQL haré el ejemplo en base al ejemplo anterior.

   Primero lo primero, implantar el sistema de Encriptación DES explicado en la entrada anterior.

   Luego declaramos la variable que hace referencia a la clase:
DES clase_encript = new DES("carlitoxenlaweb"); |cambia por|--> DES clase_encript;

   Declaramos un nuevo campo de texto para ingresar la contraseña:
JTextField clave = new JTextField();

   Agregamos el campo:
add(clave);

Y por último modificamos el listener para que envíe la encriptación cada vez que se llame el método:
public void actionPerformed(ActionEvent evt) {
clase_encript = new DES(clave.getText());
if (...........resto del codigo.............)


   Asumiendo que ya tenemos la clase que se encarga del algoritmo DES, nuestro código vendría quedando algo así:
import javax.swing.*;
import java.awt.event.*;
import java.awt.GridLayout;

class Encriptar extends JFrame implements ActionListener {

 //carga del algoritmo
 DES clase_encript;
 JLabel etiqueta = new JLabel("Probando DES: Carlitox en la Web");

 //cajas de texto
 JTextArea texto_desencriptado = new JTextArea("AQUI EL PASS");
  JScrollPane scroll_desencript=new JScrollPane(texto_desencriptado,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 JTextArea texto_encriptado = new JTextArea("RESULTADO");
  JScrollPane scroll_encript=new JScrollPane(texto_encriptado,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 JTextField clave = new JTextField("AQUI LA CLAVE");

 //botones
 JButton encriptar = new JButton ("Encriptar");
 JButton desencriptar = new JButton ("Desencriptar");

 Encriptar() {

  //el diseño
  setLayout(new GridLayout(0,2));

  //los elementos
  add(scroll_desencript);
  add(scroll_encript);
  add(encriptar);
  add(desencriptar);
  add(etiqueta);
  add(clave);

  //implementamos la accion
  encriptar.addActionListener(this);
  desencriptar.addActionListener(this);

  //Cerrar Ventana
  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent we) {
     System.exit(0);
    }
  });

  setTitle("Encriptación DES Carlitox en la Web");
     setSize(800,600);
  setVisible(true);

 }


 //el escucha o listener
 public void actionPerformed(ActionEvent evt) {

  clase_encript = new DES(clave.getText());

  if(evt.getSource()==encriptar)
    texto_encriptado.setText(clase_encript.encrypt(texto_desencriptado.getText()));

  if(evt.getSource()==desencriptar)
    texto_desencriptado.setText(clase_encript.decrypt(texto_encriptado.getText()));
 }

 //la clase principal
 public static void main (String []args) {
  new Encriptar();
 }
}

   Entonces ese texto que vemos encriptado fue creado a partir de la clave que se ingresa en el campo de texto, por lo que ahora solo resta guardar esa clave en el campo de MySQL, para esto podemos ver la entrada Conectando Java con MySQL e Introduciendo datos a una tabla.


Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión