0

暗号化されたapkファイルをプライベートモードで復号化したいのですが、特定の場所に復号化できることを知っています。

次のコードを使用してSDカードに復号化します。

FileInputStream fis = new FileInputStream("/sdcard/encrypted.apk");

FileOutputStream fos = new FileOutputStream("/sdcard/decrypted.apk");
SecretKeySpec sks = new SecretKeySpec("MyDifficultPassw".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);
int b;
byte[] d = new byte[8];
while((b = cis.read(d)) != -1) {
    fos.write(d, 0, b);
}
fos.flush();
fos.close();
cis.close();

}

しかし、プライベートモードでapkファイルを復号化することは可能ですか...?

4

1 に答える 1

1

いろいろごちゃ混ぜにしているようです。MODE_PRIVATE または詳細Context.MODE_PRIVATEは、アプリのデータ ディレクトリにファイルを作成する場合に使用されます。

MODE_PRIVATE を使用しても暗号化はまったく使用されず、アプリ自体のみがファイルにアクセスできるようにファイル アクセス許可が設定されるだけです。

多くのデバイスでは、/sdcardセクションは別のパーティションまたは fat32 でフォーマットされた SD カードです。これは、ファイル レベルでのアクセス許可をまったくサポートしていません。したがって、MODE_PRIVATE はパスでは機能しません。

MODE_PRIVATE で FileOutputStream が必要な場合は、次のように呼び出すだけです。

FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);

コンテキストはアプリのコンテキストです。少なくともアプリのプライベート データ ディレクトリでは機能します。

于 2013-01-24T12:42:47.543 に答える