encriptar fichero usuario
Publicado por luismi (5 intervenciones) el 08/12/2009 16:34:36
Buenas
Quiero recibir un usuario y una contraseña de un usuario, y con esos datos encriptar un archivo, y con ellos mismos poder desencriptarlo.
Consigo encriptar un fichero (con DES), el unico problema es que me exige una contraseña de 8 bytes y claro, no se como conseguir a partir de los datos que me da el usuario, generar una contraseña que tenga esos 8 bytes.
No tengo restricciones en cuanto a como encriptar el archivo, puedo hacerlo con DES o cualquier otro algoritmo/sistema.
Os pego el codigo que tengo
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class EncriptacionEpub{
public static final int kBufferSize = 8192;
public static void main(String[] args) throws Exception{
//comprobamos numero de argumentos
if (args.length < 3){
System.out.println("Usage -e|-d inputfile outputfile");
return;
}
//getting or creating key
System.out.println("Dame usuario");
BufferedReader usuario = new BufferedReader(new InputStreamReader(System.in));
String claveTotal=usuario.readLine();
BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Dame clave");
BufferedReader clave = new BufferedReader(new InputStreamReader(System.in));
claveTotal+=clave.readLine();
byte crearKey[] = claveTotal.getBytes();
SecretKeySpec key = new SecretKeySpec(crearKey,"DES");
//creating of Cipher
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
//ciphering or deciphering ?
if (args[0].indexOf("e") != -1){
cipher.init(Cipher.ENCRYPT_MODE, key);
}else{
cipher.init(Cipher.DECRYPT_MODE, key);
}
FileInputStream in = new FileInputStream(args[1]);
FileOutputStream fileOut = new FileOutputStream(args[2]);
CipherOutputStream out = new CipherOutputStream(fileOut, cipher);
byte[] buffer = new byte[kBufferSize];
int length;
while ((length = in.read(buffer)) != -1){
out.write(buffer, 0, length);
}
in.close();
out.close();
}
}
Quiero recibir un usuario y una contraseña de un usuario, y con esos datos encriptar un archivo, y con ellos mismos poder desencriptarlo.
Consigo encriptar un fichero (con DES), el unico problema es que me exige una contraseña de 8 bytes y claro, no se como conseguir a partir de los datos que me da el usuario, generar una contraseña que tenga esos 8 bytes.
No tengo restricciones en cuanto a como encriptar el archivo, puedo hacerlo con DES o cualquier otro algoritmo/sistema.
Os pego el codigo que tengo
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class EncriptacionEpub{
public static final int kBufferSize = 8192;
public static void main(String[] args) throws Exception{
//comprobamos numero de argumentos
if (args.length < 3){
System.out.println("Usage -e|-d inputfile outputfile");
return;
}
//getting or creating key
System.out.println("Dame usuario");
BufferedReader usuario = new BufferedReader(new InputStreamReader(System.in));
String claveTotal=usuario.readLine();
BufferedReader dato = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Dame clave");
BufferedReader clave = new BufferedReader(new InputStreamReader(System.in));
claveTotal+=clave.readLine();
byte crearKey[] = claveTotal.getBytes();
SecretKeySpec key = new SecretKeySpec(crearKey,"DES");
//creating of Cipher
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
//ciphering or deciphering ?
if (args[0].indexOf("e") != -1){
cipher.init(Cipher.ENCRYPT_MODE, key);
}else{
cipher.init(Cipher.DECRYPT_MODE, key);
}
FileInputStream in = new FileInputStream(args[1]);
FileOutputStream fileOut = new FileOutputStream(args[2]);
CipherOutputStream out = new CipherOutputStream(fileOut, cipher);
byte[] buffer = new byte[kBufferSize];
int length;
while ((length = in.read(buffer)) != -1){
out.write(buffer, 0, length);
}
in.close();
out.close();
}
}
Valora esta pregunta


0