#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