0

私のアプリはサーバーからアプリにファイルをダウンロードします。それらのファイルがたくさんある可能性があります。1つのファイルは約100MBです。それらをアプリに安全に保持するために何かをする必要があります。

最初に私はファイルを暗号化しようとしました。ただし、100 mbファイル(pdfファイル)の暗号化と復号化には時間がかかるため、これは悪い解決策です。また、一度にこのファイルを読み取る必要があるため、復号化して他のファイルに書き込み、この時点でファイルを読み取る必要があります。さらに、ファイルサイズが原因で、このファイルをメモリに保持できません。それで、ファイルが保存されている内部ストレージのディレクトリを暗号化する方法があるのでしょうか?または、ディレクトリ内のすべてのファイルを暗号化する必要があるため、これはお勧めできません。

私のファイルはpdfなので、パスワードをintに設定できますが、これを行うにはどうすればよいですか?また、デバイスがルート化されているかどうかを確認することもできますが、誰かが回避策を見つけると思います。

それで、あなたは何を提案しますか?

ありがとう

4

1 に答える 1

0

3 つのオプションがあるようです。データを暗号化する。PDFをプライベートフォルダーに保存します。またはファイルをデバイスに保存しないようにします。

1)データを暗号化する:あなたが言ったように、PDFは非常に大きく、それらをメモリに保存できない場合は、復号化されたファイルを表示する前にとにかくファイルに書き込む必要があるため、欠点があります。あなたの問題を本当に解決しません。

2) PDF をプライベート フォルダーに保存する:アプリからのみアクセスできるプライベート フォルダーに PDF を保存することもできます。これは、

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);

ここに記載されているように。"MODE_PRIVATEファイルを作成 (または同じ名前のファイルを置き換え) し、アプリケーションに対してプライベートにします". これに関する唯一の問題は、人々がルート化された電話を使用していて、アプリのプライベート フォルダーにアクセスできる場合です。これを回避する唯一の方法は (私の知る限り)、オプション 3 を使用することです。

3) デバイスにファイルを保存しない:毎回データまたはその一部をダウンロードできます。これにより、ファイルがデバイスに永続化されないため、ファイルをコピーできないことが保証されます。必要に応じて、Google ドキュメントを使用してドキュメントの一部のみをストリーミングし、ダウンロード要件を減らすことができます。これに関する問題は、膨大なデータ要件です。

メリットとデメリットを天秤にかけ、どちらが自分に合っているかを判断する必要があると思います。個人的にはオプション 2 を使用します。すべての問題に対処する解決策が見つかるとは思いません。

于 2012-05-21T06:40:33.140 に答える