La criptografía simétrica es un metodo de criptografía que utiliza una misma clave para cifrar y descrifar un mensaje. Las dos partes encargadas de comunicarse deben de ponerse de acuerdo en la clave a utilizar para el envio de mensajes.
Un buen metodo de cifrado simétrico será aquel en el cual toda la seguridad se encuentre en la clave, así que no importa si el atacante sabe cual es el algoritmo de encriptación; pues de nada le sirve si no tiene la clave.
Este es un ejemplo muy sencillo de cifrado simétrico.
Platarforma Java JDK 1.6
Lo primero que se debe hacer es generar la clave que se utilizara tanto para encriptar y descriptar el mensaje, esta clave es generada bajo el Algoritmo DES.
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
SecretKey secretKey = keyGen.generateKey();
El codigo anterior al colocarlo en nuestro programa se refiere a que dicha clave se va a generar cada vez que se encripte o desencripte un mensaje, otra manera de generar la clave y mantenerla activa esto guardando la clave en un archivo y solo llamandola al momento de utilizar.
Como ya tenemos la llave el paso seguido es encriptar el mensaje
Algoritmo DES
Modo : ECB (Electronic Code Book)
Relleno : PKCS5Padding
Cipher cifrador= Cipher.getInstance("DES/ECB/PKCS5Padding");
Iniciamos el objeto cifrador en modo Encriptación
cifrador.init(Cipher.ENCRYPT_MODE, clave);
Ahora vamos a introducir el texto a cifrar
String mensaje = "Este el texto que se va a cifrar";
Finalmente colocamos la ultima parte del codigo que son los metodos encargados de cifrar el mensaje y obtener el resultado en una cadena de byte[].
byte[] mensajeCifrado = cifrador.doFinal(mensaje.getBytes(), 0, mensaje.getBytes().lenght);
El mensaje cifrado se encuntra dentro de la variable mensajeCifrado, el cual no esta en un formato listo para impresión por lo cual solo si el usuario lo requiere este mensaje se puede codificar en base64 para mostralo en un formato más amigable.
byte[] mensajeCifradoBase64 = Base64.encode(mensajeCifrado);
Más información
Ejemplo
3 comentarios:
Hola,
Tengo unas dudas con un tema de criptografía en Java. Soy estudiante de Telecomunicaciones en España y me gustaría saber si te puedes poner en contacto conmigo.
Gracias: sikyvilas@gmail.com
Que talgracias por el ejemplo unicamente con una duda fijate que me da error en esa linea:
import org.bouncycastle.util.encoders.Base64;
aparentemente no me encuentra la carpeta bouncycasltle, espero que podas ayudarme, gracias.
Debes descargar la libreria BouncyCastle y colocar el jar correspondiente en tu solución, visita: http://bouncycastle.org
Publicar un comentario