Hi,

I'm trying to encrypt image files on Android with password based
encryption. To save the encrypted image I just do this:

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);

and to read it, this:

FileInputStream fis = new FileInputStream(f);
CipherInputStream cis = new CipherInputStream(fis, decryptCipher);
Bitmap b = BitmapFactory.decodeStream(cis);

but the Bitmap ends up as null.  The code works when I bypass the
encryption; that is when I use the File(Input|Output)Streams rather
than the Cipher(Input|Output)streams.

My Ciphers are created as follows:

 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()); }
 }

I don't get any exceptions.

There is obviously some problem with using Cipher(Output|Input)Streams
with the android functions for encoding and/or decoding images, but
since those functions are opaque and there are no exceptions, its hard
to know what it is. I suspect it has to do with padding or flushing.
Any assistance would be gratefully appreciated.

Matthew Fleming, MD
DermVision, LLC

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to