Você está na página 1de 3

Buscar...

Buscar
WebProgramacion (http://www.webprogramacion.com) > Recursos sobre informtica y tecnologa
(http://www.webprogramacion.com/54/menu/recursos-sobre-informatica-y-tecnologia.aspx) > Programacion
(http://www.webprogramacion.com/34/menu/lenguajes-de-programacion.aspx) > JAVA (http://www.webprogramacion.com/java.aspx) >
Cifrar y descifrar datos con DES
JAVA (HTTP://WWW.WEBPROGRAMACION.COM/JAVA.ASPX)
Twittear
Autor: Jos Luis lvarez
Productos destacados
(http://www.webprogramacion.com/346/elearning-
formacion-online/alojamiento-de-moodle-
en-alquiler.aspx)
(http://www.webprogramacion.com/379/productos-
servicios/pagina-web-autogestionable-y-
accesible.aspx)
(http://www.webprogramacion.com/422/servicios-
informaticos/consultoria-en-informatica-y-
tecnologia-online.aspx)
(http://www.webprogramacion.com/276/paginas-
web/tienda-online-a-medida-accesible.aspx)
Cifrar y descifrar datos con DES
Lectura de una clave por teclado, conversin de la clave leda para utilizar en el algoritmo DES para cifrado y
descifrado.
Al programa se le pasan 3 parmetros:
el primer parmetro indicar si elegimos cifrar "-c" o descifrar "-d"
el segundo parmetro indica el fichero de entrada desde donde se leen los datos
el tercer prametro es un nombre de un fichero donde se dejar el resultado de cifrar o descifrar
Si este fichero no existe lo crea programa.
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import java.security.*;
import java.util.*;
public class cifrar_descifrar
{
public static void main(String [] args)
{

String comando1 = "-c";
String comando2 = "-d";

//COMANDO 1 o COMANDO 2
if ((comando1.equals(args[0]))||(comando2.equals(args[0]))){
//leer clave por teclado
try{
InputStreamReader leer_clave = new InputStreamReader(System.in);
BufferedReader buff_clave = new BufferedReader(leer_clave);
System.out.print("Escriba una clave: ");
String clave = buff_clave.readLine();

//pasar clave a la clase SecretKey
try{
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
DESKeySpec kspec = new DESKeySpec(clave.getBytes());
SecretKey ks = skf.generateSecret(kspec);

//Inicializar el cifrado
try{
Cipher cifrado = Cipher.getInstance("DES");

//Escojo modo cifrado o descifrado segun sea el caso

if (comando1.equals(args[0])){
cifrado.init(Cipher.ENCRYPT_MODE, ks);}//MODO CIFRAR
if (comando2.equals(args[0])){
cifrado.init(Cipher.DECRYPT_MODE, ks);}//MODO DESCIFRAR

//Leer fichero

InputStream archivo = new FileInputStream( args[1] );
OutputStream fich_out = new FileOutputStream ( args[2] );

byte[] buffer = new byte[1024];
byte[] bloque_cifrado;
(http://twitter.com/webprogramacion)
(http://www.facebook.es/webprogramacionconsultoriainformatica)
(https://plus.google.com/101881872183538726536?
prsrc=3)
9 Me gusta
Twittear
Nombre (*)
Nombre
Correo electrnico (*)
Correo electrnico
Comentar
(http://www.webprogramacion.com/403/paginas-
web/gestion-integral-web.aspx)
(http://www.webprogramacion.com/337/elearning-
formacion-online/sistema-integral-de-
elearning-tienda-online-moodle-certificados-
diplomas.aspx)
Suscrbete a nuestro boletn
Te mantendremos informado sobre las novedades en nuestro blog
as como ofertas relativas a nuestros productos y servicios.
E-Mail...
WebProgramacion Consultora Informtica
Quienes somos
(http://www.webprogramacion.com/305/webprogramacion/webprogramacion-
consultoria-informatica.aspx)
Programas a medida
(http://www.webprogramacion.com/245/productos-
servicios/programas-software-a-medida.aspx)
Plataformas de formacin online Moodle
String textoCifrado = new String();
int fin_archivo = -1;
int leidos;//numero de bytes leidos

leidos = archivo.read(buffer);

while( leidos != fin_archivo ) {
bloque_cifrado = cifrado.update(buffer,0,leidos);
textoCifrado = textoCifrado + new String(bloque_cifrado,"ISO-8859-1");
leidos = archivo.read(buffer);
}

archivo.close();

bloque_cifrado = cifrado.doFinal();
textoCifrado = textoCifrado + new String(bloque_cifrado,"ISO-8859-1");
//ISO-8859-1 es ISO-Latin-1

fich_out.write(textoCifrado.getBytes("ISO-8859-1"));//escribir fichero

}
//Inicializacion de cifrado
catch(javax.crypto.NoSuchPaddingException nspe) {} //Instanciacion DES
catch(javax.crypto.IllegalBlockSizeException ibse) {}//metodo doFinal
catch(javax.crypto.BadPaddingException bpe) {}//metodo doFinal
}
//pasar clave a la clase SecretKey
catch(java.security.InvalidKeyException ike) {}
catch(java.security.spec.InvalidKeySpecException ikse) {}
catch(java.security.NoSuchAlgorithmException nsae) {}
}
//leer del teclado la clave como String
catch(java.io.IOException ioex) {}
}
}
}
Ejemplos de llamadas
Cifrado de los datos del fichero entrada, escribiendo el resultado en el fichero salida.
>>java cifrar_descifrar -c entrada salida
Descifrado de los datos del fichero entrada, depositando el mensaje obtenido en el fichero salida.
>>java cifrar_descifrar -d entrada salida
cifrado (/tag/cifrado.aspx) descifrado (/tag/descifrado.aspx) des (/tag/des.aspx)
Deja tu opinin
Comentario (*)
Escribe tu comentario...
S, acepto la poltica de privacidad (http://www.webprogramacion.com/405/condiciones/politica-de-
privacidad-de-datos.aspx) que declaro haber ledo.
(*) Campos necesarios. El correo electrnico no ser pblico.
9 Me gusta
S, acepto la poltica de privacidad
(http://www.webprogramacion.com/405/condiciones/politica-de-
privacidad-de-datos.aspx) que declaro haber ledo.
Suscribirme
Dnde estamos
(http://www.webprogramacion.com/347/webprogramacion/donde-
estamos-webprogramacion-consultoria-
informatica.aspx)
Contacta con nosotros
(http://www.webprogramacion.com/contacto.aspx)
Productos y Servicios
(http://www.webprogramacion.com/42/menu/productos-
y-servicios.aspx)
Blog de informtica y tecnologa
(http://www.webprogramacion.com/blog-informatica-
tecnologia.aspx)
Aviso Legal
(http://www.webprogramacion.com/404/condiciones/aviso-
legal.aspx) y Poltica de Privacidad de Datos
(http://www.webprogramacion.com/405/condiciones/politica-
de-privacidad-de-datos.aspx)
Poltica de cookies
(http://www.webprogramacion.com/406/condiciones/politica-
de-cookies.aspx)
(http://www.webprogramacion.com/elearning.aspx)
Diseo de Pginas Web y Tiendas Online
(http://www.webprogramacion.com/348/productos-
servicios/dise-o-de-paginas-web-y-tiendas-
online.aspx)
Accesibilidad y Tecnologa
(http://www.webprogramacion.com/221/productos-
servicios/asesoramiento-accesibilidad-
tecnologia.aspx)
Presencia en Internet
(http://www.webprogramacion.com/226/productos-
servicios/dominio-web-y-correo-corporativo.aspx)
Tiendas online
(http://www.webprogramacion.com/276/productos-
servicios/tienda-online-a-medida-accesible.aspx)
Sistema Integral de eLearning
(http://www.webprogramacion.com/337/productos-
servicios/sistema-integral-de-elearning-tienda-online-
moodle-certificados-diplomas.aspx)
Soporte tcnico
(http://soporte.webprogramacion.com/)
Iniciar asistencia remota
(http://showmypc.com/users/appbuilder/showmypcauto.php?
at=&ci=soportewp&pr=1&tk=cbbf0d5f1a28)
WebProgramacion Consultora Informtica Telfono
de atencin al cliente: +34 923 199 148 C/ Los Verdes
7, Bajo B. 37185 Villamayor, Salamanca
atencion.cliente@webprogramacion.com
(http://www.webprogramacion.com/contacto.aspx)

Você também pode gostar