Есть ли адекватный способ расшифровать текст, зашифрованный в картинку?

2 года назад я баловался со скриптом шифрования текста в изображение. Недавно обнаружил изображение, в котором зашифрован текст, но рядом не было "ключей" для расшифровки.

Мне интересно, можно ли как-то расшифровать текст из этого изображения?


Алгоритм шифрования:

  1. Текст для зашифровки в картинку предварительно шифруется при помощи библиотеки cryptography (Python).

  2. Для каждого символа из текста выбирается случайный неповторяющийся пиксель изображения, а затем код его красного оттенка заменяется на ASCII-код символа.

    • Пример: Символ 'x' имеет код 120. Случайно выбранный пиксель имеет следующие параметры — R=50, G=155, B=70. После шифрования пиксель перезапишется с новыми параметрами — R=120, G=155, B=70
  3. После того, как все символы текста были зашифрованы в пиксели изображения, сохраняется картинка и рядом с ней файл с координатами измененных пикселей, разумеется, в правильном для символов текста порядке, чтобы текст потом можно было обратно расшифровать через cryptography

Так как я использовал замену только красного оттенка, а не популярный метод LSB, измененная картинка имеет характерные "пятна", так как не у всех пикселей красный оттенок является главным, а замена сильно изменяет цвет.


Проблема:

Изображение с зашифрованным текстом есть, а вот файла с ключами-координатами измененных пикселей нет. Однако рядом лежало также оригинальное изображение. Попиксельно сверив эти картинки, я получил все измененные пиксели. А далее проблема — этих пикселей ~500 штук и для расшифровки текста нужно выставить их в правильном порядке — иначе в cryptography просто не подойдет ключ для расшифровки


Очевидная идея решения:

Подставим в формулу размещения без повторений значения:

введите сюда описание изображения

Где нижнее 500 — число пикселей, а верхнее 500 — это длина одного размещения. По формуле получаем, что есть вот столько возможных комбинаций зашифрованных символов, из которых только одна будет верной и расшифруется в текст.

Думаю, очевидно, что ни один комп мне такой перебор не обработает.


А есть ли другой способ узнать, какая комбинация верна? "Случайность" выбора пикселя была реализована через встроенную функцию random.randint. Может быть есть какой-то способ узнать ключ генератора и воспроизвести этот случайный выбор? (Возможно написал бред, к сожалению, не до конца разобрался в этой теме)


Ответы (0 шт):