В качестве упражнения я пытаюсь написать простой XOR-расшифровщик.
Я хочу взять двоичный вход ASCII и сохранить его в списке. Затем возьмите двоичный ключ и сохраните его в списке.
Функция должна сравнивать элементы из обоих списков соответственно и проверять, являются ли два сравниваемых элемента 0 или 1. Если оба равны 0 или оба равны 1, то выходной элемент = 0. Если один элемент равен 0 и другой 1 или наоборот, затем выходной элемент = 1.
Для каждого сравнения, которое выполняет функция, она должна сохранять выходной двоичный элемент в списке result
. Как только функция выполняет итерацию по каждому элементу в обоих списках, она должна вывести итоговый двоичный вывод result
.
Мой лог c:
def xor():
binary_plaintext = [1,0,1,0,1,0,0,1, 0,1,0,0,0,1,1,0, 1,1,1,0,0,0,0,1]
binary_key = [1,1,1,1,1,0,1,1, 0,0,0,0,1,1,1,1, 1,0,1,1,0,1,0,1]
result = []
for plaintext_item in binary_plaintext and key_item in binary_key:
if plaintext_item == 1 and key_item == 1: # XOR 1|1 = 0
output = 0
output.append(result)
elif plaintext_item == 0 and key_item == 0: # XOR 0|0 = 0
output = 0
output.append(result)
elif plaintext_item == 1 and key_item == 0: # XOR 1|0 = 1
output = 1
output.append(result)
elif plaintext_item == 0 and key_item == 1: # XOR 0|1 = 1
output = 1
output.append(result)
print(result)
xor()
Мой пример не работает , Каков будет правильный способ сравнения списков binary_plaintext и списка binary_key и итерации их элементов, чтобы выходное значение могло быть сохранено в новом списке?