Criptografar apenas o conteúdo de um arquivo de imagem e não o arquivo inteiro
Estou criando um aplicativo e preciso descrever apenas o conteúdo de uma imagem. Preciso que o arquivo ainda seja uma imagem após a conversão, mas a imagem mostrada não aparece como o original.
Por exemplo, enviarei a imagem criptografada para outro usuário e esta poderá mostrar e criar uma imagem (mas não a original), mas a imagem original foi criptografada nesse arquivo.
Com o seguinte algoritmo, criptografei o arquivo inteiro, e isso não pode ser aberto como imagem porque o cabeçalho também é criptografado.
Estou usando esse algoritmo, mas não sei como criptografar apenas dados ou como adicionar / modificar os cabeçalhos de uma imagem em 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;
}
Alguém tem uma idéia de como codificar isso, eu tenho pesquisado na internet sem sucesso.