2016-12-26 10 views
1

私の問題のシナリオは私のアプリケーションにあります。私はインターネットからいくつかのファイルを取り出して、内部ストレージに入れてから、ユーザーがこれらのファイルにアクセスしたいときに、ユーザーは自分のアプリケーションからアクセスできます。アンドロイドでファイルをロックするにはどうすればよいですか?

私はすべてのことをしましたが、私のアプリケーションにセキュリティを提供したいのですが、私が欲しいのは何ですか?

  1. ユーザーは自分のアプリケーションでのみ自分のファイルを見ることができます。ユーザーがファイルマネージャーからアクセスできないファイル名の前にドットを置くことによってそれらにアクセスすると、 ファイルが再度表示されるということを、この 解決策の問題が解決したということをファイル名またはフォルダ名の前に入れて解決策を教えてください。
  2. 私はまた、ユーザーが自分のファイルを開いたときに、pdfリーダーHe/Sheのpdfと同じように、pdf リーダーまたは別のアプリケーションで保存またはダウンロードするように制限したいと考えています。

いずれの種類のヘルプも私には分かります。

+0

使用し – Nithinlal

+0

を読みながら、それを格納し、復号化するために、データを暗号化http://stackoverflow.com/questions/20042398/lock-file-for-writing-in-android – Arjun

+0

それは、問題の完全なソリューションですか?ユーザーがスマートな場合、アプリケーションからファイルサイズを知ることで、ストレージから直接ファイルを検索することができます。 – Champandorid

答えて

0

ファイルを暗号化アルゴリズムで暗号化し、独自のファイル拡張子で保存すると、ファイルマネージャからファイルを開くためのインテントフィルタを作成することができます。

+0

私はファイルを暗号化すると仮定しますが、ユーザーは自分のアプリケーションから自分のファイルのファイルサイズを取得します。彼がスマートなら、彼はいくつかの検索をしてファイルを見つけることができます。 – Champandorid

+0

彼はメモリをダンプしたくない –

1

このファイルを暗号化して、ユーザーがアクセスできないようにすることができます。ここに私のために働く暗号化方法です。

public void encrypt() throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException { 
    // Here you read your file. 
    FileInputStream fis = new FileInputStream("Path Of your file"); 
    // This stream write the encrypted text. This stream will be wrapped by another stream. 
    FileOutputStream fos = new FileOutputStream("Path Of your file"); 

    // Length is 16 byte 
    SecretKeySpec sks = new SecretKeySpec("MyDifficultPassw".getBytes(), "AES"); 
    // Create cipher 
    Cipher cipher = Cipher.getInstance("AES"); 
    cipher.init(Cipher.ENCRYPT_MODE, sks); 
    // Wrap the output stream 
    CipherOutputStream cos = new CipherOutputStream(fos, cipher); 
    // Write bytes 
    int b; 
    byte[] d = new byte[8]; 
    while((b = fis.read(d)) != -1) { 
     cos.write(d, 0, b); 
    } 
    // Flush and close streams. 
    cos.flush(); 
    cos.close(); 
    fis.close(); 
} 

特定のファイルを復号化する方法です。

public void decrypt() throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException { 
FileInputStream fis = new FileInputStream("Path Of your file"); 

FileOutputStream fos = new FileOutputStream("Path Of your file"); 
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();} 
関連する問題