LINUX.ORG.RU

История изменений

Исправление peregrine, (текущая версия) :

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

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, :

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

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 формат сохраняй. Ну а дальше идея ясна, крипту только настоящую внести (тут у ключа должны быть знатные проблемы), а не это подобие, и будет тебе визуальное шифрование картинок.