Итак, я работаю над приложением, в котором мне нужно расшифровать зашифрованные файлы. Шифрование выполняется с помощью 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);
}
}
}
Так что любая помощь или предложения, как это сделать, приветствуются.