Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/03/2015, 08:47
lagranladilla
 
Fecha de Ingreso: marzo-2015
Mensajes: 3
Antigüedad: 9 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Cifrar un archivo añadiendo clave envuelta en un único archivo

Ya lo tengo solucionado. En el post puesto en [URL="https://stackoverflow.com/questions/29239854/encrypt-a-file-appending-wrapped-key-in-unique-file"]StackOverflow[/URL] havia un pequeño error de codigo.

Al desencriptar usaba:

Código Java:
Ver original
  1. public static void fileUncryptWrapped(File in, File out, PrivateKey priv) {
  2.  
  3.    try {
  4.  
  5.        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
  6.        cipher.init(Cipher.UNWRAP_MODE, priv);
  7.  
  8.        //First we must to take the wrapped key in the first 256 bytes of the file:
  9.        byte[] bufferKey = new byte[256];
  10.        InputStream is = new FileInputStream(in);
  11.        if (is.read(bufferKey) != bufferKey.length) {
  12.  
  13.        }
  14.        is.close();
  15.  
  16.        Key ky = cipher.unwrap(bufferKey, "AES", Cipher.SECRET_KEY);¡
  17.  
  18.        // Now we must to uncrypt the rest of the file
  19.        cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
  20.        cipher.init(Cipher.DECRYPT_MODE, ky);
  21.  
  22.        CipherInputStream ix = new CipherInputStream(new FileInputStream(in), cipher);
  23.        FileOutputStream os = new FileOutputStream(out);
  24.  
  25.        copy(ix, os);
  26.  
  27.        ix.close();
  28.        os.close();
  29.  
  30.    } catch (Exception ex) {
  31.        System.err.println("Ha succeït un error xifrant: " + ex);
  32.    }
  33. }

Como podemos ver, cuando instancio el CipherInputStream no lo hago usando el FileInputStream instanciado para leer los primeros 256.
Modificando el codigo por:
Código Java:
Ver original
  1. CipherInputStream ix = new CipherInputStream(is, cipher);

soluciona mi problema..

Gracias por la ayuda!