Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. import java.io.*;
  2. import javax.crypto.*;
  3. import javax.crypto.spec.DESKeySpec;
  4. import java.security.*;
  5. import java.util.*;
  6. public class cifrar_descifrar
  7. {
  8. public static void main(String [] args)
  9. {
  10.  
  11. String comando1 = "-c";
  12. String comando2 = "-d";
  13.  
  14. //COMANDO 1 o COMANDO 2
  15. if ((comando1.equals(args[0]))||(comando2.equals(args[0]))){
  16. //leer clave por teclado
  17. try{
  18. InputStreamReader leer_clave = new InputStreamReader(System.in);
  19. BufferedReader buff_clave = new BufferedReader(leer_clave);
  20. System.out.print("Escriba una clave: ");
  21. String clave = buff_clave.readLine();
  22.  
  23. //pasar clave a la clase SecretKey
  24. try{
  25. SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
  26. DESKeySpec kspec = new DESKeySpec(clave.getBytes());
  27. SecretKey ks = skf.generateSecret(kspec);
  28.  
  29. //Inicializar el cifrado
  30. try{
  31. Cipher cifrado = Cipher.getInstance("DES");
  32.  
  33. //Escojo modo cifrado o descifrado segun sea el caso
  34.  
  35. if (comando1.equals(args[0])){
  36. cifrado.init(Cipher.ENCRYPT_MODE, ks);}//MODO CIFRAR
  37. if (comando2.equals(args[0])){
  38. cifrado.init(Cipher.DECRYPT_MODE, ks);}//MODO DESCIFRAR
  39.  
  40.  
  41. //Leer fichero
  42.  
  43. InputStream archivo = new FileInputStream( args[1] );
  44. OutputStream fich_out = new FileOutputStream ( args[2] );
  45.  
  46. byte[] buffer = new byte[1024];
  47. byte[] bloque_cifrado;
  48. String textoCifrado = new String();
  49. int fin_archivo = -1;
  50. int leidos;//numero de bytes leidos
  51.  
  52. leidos = archivo.read(buffer);
  53.  
  54. while( leidos != fin_archivo ) {
  55. bloque_cifrado = cifrado.update(buffer,0,leidos);
  56. textoCifrado = textoCifrado + new String(bloque_cifrado,"ISO-8859-1");
  57. leidos = archivo.read(buffer);
  58. }
  59.  
  60. archivo.close();
  61.  
  62. bloque_cifrado = cifrado.doFinal();
  63. textoCifrado = textoCifrado + new String(bloque_cifrado,"ISO-8859-1");
  64. //ISO-8859-1 es ISO-Latin-1
  65.  
  66. fich_out.write(textoCifrado.getBytes("ISO-8859-1"));//escribir fichero
  67.  
  68. }
  69. //Inicializacion de cifrado
  70. catch(javax.crypto.NoSuchPaddingException nspe) {} //Instanciacion DES
  71. catch(javax.crypto.IllegalBlockSizeException ibse) {}//metodo doFinal
  72. catch(javax.crypto.BadPaddingException bpe) {}//metodo doFinal
  73. }
  74. //pasar clave a la clase SecretKey
  75. catch(java.security.InvalidKeyException ike) {}
  76. catch(java.security.spec.InvalidKeySpecException ikse) {}
  77. catch(java.security.NoSuchAlgorithmException nsae) {}
  78. }
  79. //leer del teclado la clave como String
  80. catch(java.io.IOException ioex) {}
  81. }
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement