Кажется, вы делаете неправильные предположения и, возможно, захотите пересмотреть / пересмотреть свой подход.
чтобы получить новое зашифрованное изображение. Затем рассчитайте пиковое отношение сигнал / шум (PSNR) между темой
Формат изображения BMP состоит не только из пикселей. Как уже отмечалось, существуют метаданные заголовка (размер, глубина, ...), которые, если вы зашифруете весь файл, больше не будут иметь смысла (это не будет bmp). Я бы сказал, что вы можете создавать новое изображение и обрабатывать пиксель за пикселем на уровне изображения, а не просто шифровать входной файл . Пример:
https://www.dyclassroom.com/image-processing-project/how-to-get-and-set-pixel-value-in-java
int p = img.getRGB(x,y);
Итак, я исследовал другие варианты и нашел ECIES.
ECIES - это гибридная схема, вы можете взглянуть на следующий ответ для шифрования ECIES https://gist.github.com/amrishodiq/9821413
, Вывод должен содержать больше / другую информацию, чем просто пиксели, и это определенно не тот BMP, который вы можете просто открыть и сравнить.
Гибридная схема шифрования предполагает, что данные зашифрованы симметричным шифром (я не уверен, что BC используется в этом случае, если кто-то знает, пожалуйста, прокомментируйте), где ключ шифрования получен с использованием ECC.
Таким образом, в конце вы будете сравнивать пиксели, зашифрованные базовым симметричным алгоритмом (например, aes256-cbc), где он предназначен для обеспечения вывода, неотличимого от случайного вывода.
необходимо зашифровать изображение bmp с помощью ECC
Если вы зашифруете каждый пиксель (допустим, вы представите каждый пиксель как 16-битный rgb), вывод ECC будет намного длиннее, чем входные данные, поэтому непросто напрямую отобразить входные значения в выходные данные того же измерения ( размер)