Crittografia dei file di image in Android – Cipher (Output | Input) Problemi di stream

Sto provando a crittografare i file di image in Android con crittografia basata su password. Per salvare l'image crittografata, faccio semplicemente questo:

FileOutputStream fos = new FileOutputStream(thumbnailFile); CipherOutputStream cos = new CipherOutputStream(fos, encryptCipher); Bitmap thumbnail = Bitmap.createScaledBitmap(bm2, 140, 140, true); thumbnail.compress(Bitmap.CompressFormat.JPEG, 80, cos); 

e leggerlo, questo:

  • Come posso creare ViewPager con l'anteprima della pagina precedente e quella successiva, e quella centrata quella zoomata dall'anteprima
  • Condividi l'image File dalla directory di cache Via Intent ~ android
  • Come aggiungere il titolo nel layout del cassetto di navigazione?
  • Come faccio ad aggiungere un titolo al mio gruppo di menu
  • java.lang.illegalargumentexception carattere illegale in url
  • Imansible scaricare il file da Dropbox
  •  FileInputStream fis = new FileInputStream(f); CipherInputStream cis = new CipherInputStream(fis, decryptCipher); Bitmap b = BitmapFactory.decodeStream(cis); 

    ma la Bitmap finisce come null. Il codice funziona quando bypasserò la crittografia; cioè quando utilizzo i flussi File (Input | Output) piuttosto che i flussi di Cipher (Input | Output).

    Le mie cifre sono create come segue:

     public void initCiphers(char password[]) { PBEKeySpec pbeKeySpec; PBEParameterSpec pbeParamSpec; SecretKeyFactory keyFac; byte[] salt = { (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c, (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99 }; int count = 20; pbeParamSpec = new PBEParameterSpec(salt, count); pbeKeySpec = new PBEKeySpec(password); try { keyFac = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec); encryptCipher = Cipher.getInstance("PBEWithMD5AndDES"); decryptCipher = Cipher.getInstance("PBEWithMD5AndDES"); encryptCipher.init(Cipher.ENCRYPT_MODE, pbeKey, pbeParamSpec); decryptCipher.init(Cipher.DECRYPT_MODE, pbeKey, pbeParamSpec); } catch (Exception e) { Log.v("tag", e.toString()); } 

    Non ho alcuna exception.

    Vi è ovviamente qualche problema con l'utilizzo di Stream di Cipher (Output | Input) con le funzioni android per la codifica e / o la decodifica delle immagini, ma poiché queste funzioni sono opache e non esistono eccezioni, è difficile sapere cosa sia. Sospetto che abbia a che fare con l'imbottitura o il lavaggio. Qualsiasi assistenza sarebbe stata grata.

  • Come visualizzare e impostare l'evento clic su Freccia indietro sulla barra degli strumenti
  • Come posso fare l'evento doppio clic su ImageView in Android?
  • "Android.util.AndroidRuntimeException: requestFeature () deve essere chiamato prima di aggiungere il contenuto" su showDialog (dialogId)
  • Client Google Api a volte NULL in onConnected
  • Android: Effettua una telefonata dal servizio
  • Formattazione di data semplice che dà tempo sbagliato
  • 2 Solutions collect form web for “Crittografia dei file di image in Android – Cipher (Output | Input) Problemi di stream”

    Quando si scrive a CipherOutputStream, assicurarsi di close() il stream dopo aver scritto i dati (e non chiudendo il stream sottostante prima di esso). La chiusura assicura l'aggiunta dell'imbottitura giusta. Non è sufficiente un flush() da solo.

    Inoltre, vi consiglio di non utilizzare DES per nuovi protocolli – preferito oggi è AES.

    È ansible subclassare CipherOutputStream o anche solo OutputStream e solo ignorare il metodo flush () per non fare nulla.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.