Szyfruj tylko zawartość pliku obrazu, nie cały plik
Tworzę aplikację i muszę wpisać tylko treść obrazu. Potrzebuję, aby plik był nadal obrazem po konwersji, ale obraz nie pokazywał się jako oryginał.
Na przykład wyślę obraz zaszyfrowany do innego użytkownika, a ten będzie mógł wyświetlać i obrazować (ale nie oryginał), ale oryginalny obraz został zaszyfrowany w tym pliku.
Za pomocą następującego algorytmu zaszyfrowałem cały plik i nie można go otworzyć jako obrazu, ponieważ nagłówek jest również zaszyfrowany.
Używam tego algorytmu, ale nie wiem, jak szyfrować dane lub jak dodawać / modyfikować nagłówki obrazu w 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;
}
Każdy ma pomysł, jak to skodyfikować, bez powodzenia szukałem w Internecie.