Cifrar solo el contenido de un archivo de imagen no el archivo completo

Estoy creando una aplicación y necesito encriptar solo el contenido de una imagen. Necesito que el archivo siga siendo una imagen después de la conversión, pero la imagen mostrada no se muestra como la original.

Por ejemplo, enviaré la imagen encriptada a otro usuario y ésta podrá mostrar una imagen (pero no la original), pero la imagen original se cifró en ese archivo.

Con el siguiente algoritmo cifré todo el archivo, y esto no se puede abrir como imagen debido a que el encabezado también está cifrado.

Estoy utilizando este algoritmo pero no sé cómo cifrar solo los datos o cómo agregar / modificar los encabezados de una imagen en java / android:

public byte[] encrypt_image(Bitmap bm, String password_) {

    byte[] encryptedData = null;

    try{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] b = baos.toByteArray();  

        byte[] keyStart = password_.getBytes();
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
        sr.setSeed(keyStart);
        kgen.init(128, sr); 
        SecretKey skey = kgen.generateKey();
        byte[] key = skey.getEncoded();    

        // Encrypt
        encryptedData = Security.encrypt(key,b);


    }catch (Exception e) {
        Log.e("encrpyt_image()", e.getMessage());
    }
    return encryptedData;
}

Cualquiera tiene una idea sobre cómo codificar eso, he estado buscando en Internet sin éxito.

Respuestas a la pregunta(1)

Su respuesta a la pregunta