Как создать два списка XORable из основного списка в python?

#python #binary #bit-manipulation #byte

#python #двоичный #битовая манипуляция #байт

Вопрос:

У меня есть список байтов ASCII в двоичном формате для слова «тест»

 1110100 1100101 1110011 1110100
  

Как я могу создать два дополнительных списка, чтобы при выполнении операции XOR между ними я получал приведенный выше список?

Например, у меня есть первый файл bin, который содержит один список, и другой файл bin, который содержит второй список.

Декодирование списков в обоих файлах дает результирующий массив выше.

Ответ №1:

Пусть один файл будет списком, который вы хотите сгенерировать, а в другом — все нули.

Комментарии:

1. Тогда это не было бы уникальным, и об этом очень легко догадаться. Я думал о некоторой генерации двоичных файлов с учетом необходимого вывода XOR.

2. Мне было непонятно, что «трудно угадать» было требованием. Возможно, если первый список будет случайным, а другой — первым битом xor целевого списка, вам подойдет.

Ответ №2:

Вы можете создать случайный bytearray (список), это будет ваш 1-й файл. После этого вы выполняете XOR для своего 1-го файла с целевым «списком» и получаете 2-й файл.

Когда вы выполняете XOR 1-го и 2-го файлов, вы получите обратно свой исходный файл.

Более формальный (f1 = первый файл, f2 = 2-й файл, M = сообщение):

 f1 = R
f2 = R ^ M
M = f1 ^ f2 = R ^ R ^ M