Android-有没有办法解密MODE_PRIVATE中的apk文件

时间:2013-01-24 05:47:42

标签: android encryption

我想以私密模式解密加密的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文件吗?

1 个答案:

答案 0 :(得分:1)

看起来你正在混淆。如果要在应用程序的数据目录中创建文件,则使用MODE_PRIVATE或详细Context.MODE_PRIVATE

使用MODE_PRIVATE根本不使用加密,它只是设置文件访问权限,以便只有应用程序本身才能访问该文件。

在很多设备上,/sdcard部分是一个单独的分区或使用fat32格式化的SD卡 - 它根本不支持文件级别的权限。因此,MODE_PRIVATE在路径上不起作用。

如果您需要MODE_PRIVATE中的FileOutputStream,您只需调用:

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

上下文是您应用的上下文。它至少可以在应用程序的私有数据目录中运行。

相关问题