1

I need a little question.How can I repair that code so I can use it in android too.I need just to load a file from assets folder in android projet, decrypt it and to show the size of the file and how long it takes to the application to decrypt it.

Code :

package decryption;

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;

    public class Decryption {
      public static void main(String args[]) throws Exception {


          File file = new File("ecryption.pdf");
          System.out.println(file.getAbsolutePath());
          System.out.println("user.dir is: " + System.getProperty("user.dir"));

        Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
        SecretKeySpec keySpec = new SecretKeySpec("01234567890abcde".getBytes(), "AES");
        IvParameterSpec ivSpec = new IvParameterSpec("fedcba9876543210".getBytes());
        cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

        FileInputStream fis   = new FileInputStream(new File("ecrypted.pdf"));
        long start = System.currentTimeMillis();
        System.out.print(start+"           ");
        CipherInputStream cis = new CipherInputStream(fis, cipher);
        FileOutputStream fos  = new FileOutputStream(new File("decrypted.pdf"));
        long end = System.currentTimeMillis();
        System.out.print(end);


        byte[] b = new byte[8];
        int i;

        while ((i = cis.read(b)) != -1) {
          fos.write(b, 0, i);
        }
        fos.flush(); fos.close();
        cis.close(); fis.close();       
      }
}

2 Answers 2

3
//      File file = new File("ecryption.pdf");
//      System.out.println(file.getAbsolutePath());
//      System.out.println("user.dir is: " + System.getProperty("user.dir"));

// FileInputStream fis   = new FileInputStream(new File("ecrypted.pdf"));
InputStream fis = getAssets().open("ecryption.pdf");

// FileOutputStream fos  = new FileOutputStream(new File("decrypted.pdf"));
FileOutputStream fos  = new FileOutputStream(
       new File(Environment.getExternalStorageDirectory(), "decrypted.pdf"));

Then you need to compile and adjust the rest.

Sign up to request clarification or add additional context in comments.

3 Comments

This code is throwin me an Exception : 07-29 13:02:29.693: VERBOSE/Error(1112): Error java.io.FileNotFoundException: /sdcard/decrypted.pdf
Then correct and debug the program. Don't expect you'll get somebody to do it all for you. I have put you on the track.
Thanks a lot, I fixed the error.I forgot to add the permission in manifest file.
0

this will copy one file at a time... start from there..

    public void copyAssets() {

    try {
        in = getAssets().open("aabbccdd.mp3");
        File outFolder = new File(root.getAbsolutePath() + "/testfolder182");
        outFolder.mkdir();
        File outFile = new File(outFolder, "ooooooooohhhigetit.mp3");
        out = new FileOutputStream(outFile);
        copyFile(in, out);
        in.close();
        in = null;
        out.flush();
        out.close();
        out = null;
    } catch (IOException e) {
        Log.e("tag", "Failed to copy asset file: ", e);
    }
}

private void copyFile(InputStream in, OutputStream out) throws IOException {
    byte[] buffer = new byte[1024];
    int read;
    while ((read = in.read(buffer)) != -1) {
        out.write(buffer, 0, read);
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.