Java - encriptar fichero usuario

   
Vista:

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();
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder