LINUX.ORG.RU

Не могу правильно разработать алгоритм

 ,


2

1

Добрый вечер. В экспериментальных целях хочу сделать следующий алгоритм (на питоне если что).

Есть изображение и некий ключ (произвольная строка). Задача в том чтобы каким-то образом превратить изображение по ключу в визуальный мусор и затем, соответственно по этому же ключу, вернуть его в первозданный вид. Какие варианты можно придумать? Копать в сторону перемещения пикселей или может работать с цветами пикселей? Хотелось бы услышать здравые идеи.

★★

Последнее исправление: Andreezy (всего исправлений: 1)

Ну вот тебе пример, ТС, только в реальной системе так не делай, это не криптостойкий генератор шума, да и ключ - говно.

from PIL import Image
import numpy
import random

image = numpy.asarray(Image.open('ava.png'))
noise = numpy.copy(image)
random.seed(100500)  # псевдоключ
with numpy.nditer(noise, op_flags=['readwrite']) as it:
    for x in it:
        x[...] = random.randint(0, 255)
noise_image = Image.fromarray(noise)
noise_image.save('noise.png')
pseudo_crypt = numpy.bitwise_xor(image, noise)
pseudo_crypt_image = Image.fromarray(pseudo_crypt)
pseudo_crypt_image.save('result.png')
decrypted = pseudo_crypt = numpy.bitwise_xor(pseudo_crypt, noise)
decrypted_image = Image.fromarray(decrypted)
decrypted_image.save('decrypted.png')
Я на своей аватарке тестировал, можешь на любой картинке проверять, только в png или другой lossless формат сохраняй. Ну а дальше идея ясна, крипту только настоящую внести (тут у ключа должны быть знатные проблемы, разве что от кулхацкеров поможет), а не это подобие, и будет тебе визуальное шифрование картинок.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

самый простой вариант

Но цвета то мож было хоть для приличия пересчитать. Хотя бы:

R=255-R;
anonymous
()
Ответ на: комментарий от XoFfiCEr

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

peregrine ★★★★★
()
Ответ на: комментарий от Harald

берем 3 младших бита у каждого цвета в truecolor это 9 бит получается и записываем байты информации в эти 3 младших бита, цвет при этом изменится незначительно. Остается бит для проверки данных.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от peregrine

То что ты описываешь называется стеганография (наука о том как в картинку/музыку/на кожу головы раба нанести информацию и чтобы никто не заметил).

AndreyKl ★★★★★
()
Ответ на: комментарий от peregrine

круто, работает, надо допилить только теперь

Andreezy ★★
() автор топика
Ответ на: комментарий от XoFfiCEr

Я вижу варианты гораздо шире.

Trucolor – это 24 бита в RGB по 8 бит на каждый канал.

Но всё же есть множество вариаций хранения изображений помимо конечного варианта отображений после развёртывания для вывода на монитор (к примеру).

HIS
()
Ответ на: комментарий от XoFfiCEr

Но всё же. ТС пока не назвал формат хранения данных. Вариации как их нужно обрабатывать: распаковав в битмап или обработать контейнер только.

HIS
()
Ответ на: комментарий от XoFfiCEr

truecolor как бы внутренний формат

Но не формат хранения изображения на носителях например.

Это стандарт для большинства применений в повседневной консамер графике. Не более.

HIS
()
Ответ на: комментарий от HIS

ковырять контейнер вообще бесполезно.

ждем ТСа.

XoFfiCEr ★★☆☆
()

Есть 3 (три) основных варианта хранения информации о пикселях.

  1. Наиболее распространённый это вариант с потерями данных с помощью разложения Фурье на частоты в виде двумерного косинусоида. Там много теоретической подоплёки основанной на теории цветовоспрятия глазом человека и ещё более математики и геометрии. Обычно это формат хранения – JPG.

  2. Вариант с палитрой. Он жутко прост в хранении но не так прост в генерации. Много математики. Как вариант хранения - GIF.

  3. Каждый пиксель имеет свой собственный набор цветовых составляющих в выбранной создателем конечного файла палитре. Палитр Овер дофига. Наиболее известна из них RGB. Стандартные битности каналов обычно варьирутся в варинатах: 8,16,24,32. Распространённые варианты форматов: PNG, Tiff.

HIS
()
Ответ на: комментарий от HIS

а в принудительном выбрасывании частот с наименьшей магнитудой.

И с помошью чего это делается? Ну?

anonymous
()
Ответ на: комментарий от HIS

Что не мешает при очень большом желании делать lossless или почти lossless преобразования в jpeg-ах, сохраняя «правильность» формата.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Что не мешает при очень большом желании делать lossless или почти lossless преобразования в jpeg-ах, сохраняя «правильность» формата.

Ты сам перечитай свой набор буков.

А по поводу JPG. Конечно его можно сохранять без потерь. Просто смысл JPG-а тогда теряется.

HIS
()

короче вот пусть ТС посмотрит и сам выберет что ему .

В режиме онлайн со случайными параметрами смотреть тут http://xofficer.ru/services/xor-image/

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от HIS

Тоесть ты называешь выбрасывание «не нужных» частот (саму принудительную потерю данных) - квантованием. Замечательно.

Неужели выбрасывание называется квантованием?

HIS
()
Ответ на: комментарий от HIS

Неужели выбрасывание называется квантованием?

Нет там никакого «выбрасывания». Там деление на матрицу квантования и округление. Всё.

anonymous
()
Ответ на: комментарий от anonymous

Я могу на пальцах рассказать как работает сжатие по принципу JPG.

Ты можешь?

Если из адекватов здешних кто-то попросит - я расскажу.

HIS
()
Ответ на: комментарий от anonymous

Тоесть ты не можешь. Значит не понимаешь.

Ну зачем тогда далее на тебя терять время.

HIS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.