2012-02-06 2 views
1

Как сделать шифрование и дешифрование файлов приложения на SD-карте? так что я могу защитить файлы на SD-карте, и никто другой не сможет получить доступ за пределами этого приложения без дешифрования в этих файлах?Синхронизация файлов Android

Есть ли кто-нибудь, кто может дать мне хороший источник примера для внедрения шифрования в приложение для Android?

ответ

5

Я написал эту программу, которая зашифрует файл с помощью AES и расшифрует тот же файл. Это, безусловно, поможет вам.

FileInputStream fis = new FileInputStream(new File("D:/Shashank/Test123.txt")); 
     File outfile = new File("D:/Shashank/encTest1234.txt"); 
     int read; 
     if(!outfile.exists()) 
      outfile.createNewFile(); 
     File decfile = new File("D:/Shashank/dec123.txt"); 
     if(!decfile.exists()) 
      decfile.createNewFile(); 
     FileOutputStream fos = new FileOutputStream(outfile); 
     FileInputStream encfis = new FileInputStream(outfile); 
     FileOutputStream decfos = new FileOutputStream(decfile); 
     Cipher encipher = Cipher.getInstance("AES"); 
     Cipher decipher = Cipher.getInstance("AES"); 
     KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
     SecretKey skey = kgen.generateKey(); 
     encipher.init(Cipher.ENCRYPT_MODE, skey); 
     CipherInputStream cis = new CipherInputStream(fis, encipher); 
     decipher.init(Cipher.DECRYPT_MODE, skey); 
     CipherOutputStream cos = new CipherOutputStream(decfos,decipher); 
     while((read = cis.read())!=-1) 
       { 
        fos.write((char)read); 
        fos.flush(); 
       } 
     fos.close(); 
     while((read=encfis.read())!=-1) 
     { 
      cos.write(read); 
      cos.flush(); 
     } 
    cos.close(); 
+1

привет спасибо, что этим я могу в состоянии решить мою проблему .... спасибо очень много .... –

+0

Это, как представляется, использовать режим ECB и не для инициализации ГСЧ. Я категорически не рекомендую кому-либо копировать этот код и ожидать какой-либо безопасности. –

2

Вы можете просто зашифровать содержимое файла во время записи его в файл, а затем при его расшифровке. SIMPLE EXAMPLE: предоставленная ссылка показывает пример кода для шифрования/расшифровки строки. Надеюсь, это поможет

3

Я нашел решение криптографии в приложении для Android, с помощью которого вы можете обеспечить безопасность данных приложения внутри приложения и за пределами формы приложения. Sdcard file-manager не сможет получить доступ к конфиденциальной информации приложение.

Для этого вы можете использовать два возможных способа защиты файлов приложений.

  1. изменить формат расширения файла с другим расширением, так что реальный файл не будет в состоянии открыть пользователем

  2. вы способны пользователя Криптография на содержимое файла приложения.

    Cryptography

    здесь я собираюсь отправить один пример исходного кода, в котором файл приложения будет зашифрованное с AES алгоритма, и он будет не в состоянии получить доступ к пользователю в файле сене, но как только пользователь придет в приложение, оно расшифровывается с реальной формой и работает нормально.


package com.filepermition.android; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 

import javax.crypto.Cipher; 
import javax.crypto.CipherInputStream; 
import javax.crypto.CipherOutputStream; 
import javax.crypto.KeyGenerator; 
import javax.crypto.SecretKey; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class AndroidFilePermitionActivity extends Activity 
{ 
    Button btn_button; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btn_button = (Button)findViewById(R.id.btn_button); 

     btn_button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       try{ 
        FileInputStream fis = new FileInputStream(
         new File("/mnt/sdcard/testfile/file.wav")); 
        File outfile = new File("/mnt/sdcard/testfile/encTest1234.wav"); 

        int read; 
        if(!outfile.exists()) 
         outfile.createNewFile(); 

        File decfile = new File("/mnt/sdcard/testfile/dec123.wav"); 
        if(!decfile.exists()) 
         decfile.createNewFile(); 

        FileOutputStream fos = new FileOutputStream(outfile); 
        FileInputStream encfis = new FileInputStream(outfile); 
        FileOutputStream decfos = new FileOutputStream(decfile); 

        Cipher encipher = Cipher.getInstance("AES"); 
        Cipher decipher = Cipher.getInstance("AES"); 

        KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
        SecretKey skey = kgen.generateKey(); 
        encipher.init(Cipher.ENCRYPT_MODE, skey); 
        CipherInputStream cis = new CipherInputStream(fis, encipher); 
        decipher.init(Cipher.DECRYPT_MODE, skey); 
        CipherOutputStream cos = new CipherOutputStream(decfos,decipher); 

        while((read = cis.read())!=-1) 
        { 
         fos.write((char)read); 
         fos.flush(); 
        } 
        fos.close(); 
        while((read=encfis.read())!=-1) 
        { 
         cos.write(read); 
         cos.flush(); 
        } 
        cos.close(); 

       }catch (Exception e) { 
        // TODO: handle exceptione 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 
Смежные вопросы