Расшифровка Python XOR только расшифровывает половину изображения RGB - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь XOR расшифровать зашифрованное изображение в Python, используя предоставленный ключ.Мне удалось расшифровать половину изображения, и я не могу понять, почему нижняя половина также не расшифровывается.

key = np.load('key.npy')
secret = plt.imread('secret.bmp')

newArr = secret.copy()

for t, k in zip(secret, key):
    e = t^k
    newArr[t] = e

plt.imshow(newArr)

Что-то не так с моим циклом, который останавливает расшифровку послеОбходить только половину строк изображения?

enter image description here

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы пишете в newArr[t], но t является секретным байтовым значением, а не индексом.Вы должны полностью заменить цикл for на логический xor для содержимого secret и key (при условии, что ключ и секретные массивы / матрицы транслируются в одну и ту же форму; подробнее о трансляции здесь * 1006)*):

key = np.load('key.npy')
secret = plt.imread('secret.bmp')

newArr = np.logical_xor(key, secret)
plt.imshow(newArr)
0 голосов
/ 13 декабря 2018

Я предполагаю, что у вас есть len(key) < len(secret).

Функция Python zip остановится, когда достигнет конца более короткой последовательности, поэтому, если ключ слишком короткий, ваша проблема не расшифрует оставшуюся частьданные, когда он достигает конца key.

...