LINUX.ORG.RU

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

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

очевидно же, что он пишет малварь, которая зашифрует юзеру файлы и будет просить бабос за расшифровку:

Ну приплыли. Малварь на питоне

Вот то что я хотел уже написали. Я просто забыл про random.seed() и пытался что-то накостылить сам. А так решение то что нужно

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')

Но минус только в том, что не поддерживает JPEG. Отсюда и продолжение

Исходная версия Andreezy, :

очевидно же, что он пишет малварь, которая зашифрует юзеру файлы и будет просить бабос за расшифровку:

Ну приплыли. Малварь на питоне

Вот то что я хотел уже написали. Я просто забыл про random.seed() и пытался что-то накостылить сам. А так решение то что нужно

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')