Android Java расшифровка - сохранение расшифрованного файла - PullRequest
0 голосов
/ 29 июля 2011

Итак, я работаю над приложением, в котором мне нужно расшифровать зашифрованные файлы. Шифрование выполняется с помощью PHP, а дешифрование - с помощью Java. Я проверил, нет проблем с шифрованием / дешифрованием в программе Java. Но мой проблема в том, что я не могу запустить одно и то же приложение в Android. Мне нужно выяснить, как получить зашифрованные данные. На данный момент я предпочитаю хранить его в папке активов вручную, только для тестов, и получаю его так:

AssetManager am = this.getAssets();
InputStream is = am.open("AUDIOVISUALFOTO02.pdf"); //or image file

После этого мне нужно где-то сохранить дешифрованный файл, чтобы я мог посмотреть, работает ли дешифрование и на устройстве. Так что в основном мне нужно найти способ, как получить зашифрованный файл из папки активов в качестве примера и где хранить расшифрованный файл (не важно где). Вот код, который я использую для расшифровки:

package com.android.decrypt;

import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

    public class DecryptPDFActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {

        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("encrypted.pdf"));
        CipherInputStream cis = new CipherInputStream(fis, cipher);
        FileOutputStream fos  = new FileOutputStream(new File("decrypted.pdf"));

        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();

        }
        catch(Exception e)
        {
            e.fillInStackTrace();
            Log.e("Error", "Damned ! : "+e);
        }
      }
}

Так что любая помощь или предложения, как это сделать, приветствуются.

1 Ответ

0 голосов
/ 30 июля 2011

Непонятно, о чем вы спрашиваете.

Если вы пытаетесь прочитать файл из папки активов, есть несколько примеров на SO.

Активы Android Нет значения Читать?

Почему бы просто не использовать файловую систему вместо папки assets в apk?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...