@Heavy10110

Объясните пожалуйста код python?

import itertools


def XOR_cipher(string, key):

    answer = []

    key = itertools.cycle(key)  # Повторяем ключ, чтобы зашифровать всю строку

    for s, k in zip(string, key):
        answer.append(chr(ord(s) ^ ord(k)))

    return ''.join(answer)

# Функция для расшифровки точно такая же
XOR_uncipher = XOR_cipher
  • Вопрос задан
  • 420 просмотров
Решения вопроса 1
@CulHatsker
Маслину поймал
itertools.cycle(key) возвращает итератор, в котором по очереди циклично выдаются символы из key (то есть, если итерация дойдёт до последнего символа из key, то следующим он вернет первый символ из key и так без конца).

zip(string, key) возвращает итератор кортежей, каждую итерацию берутся элементы из каждого аргумента (в данном случае string и key) и возвращается кортеж этих элементов до тех пор, пока во всех итераторах остаются элементы.

Внутри цикла берется один символ шифруемого текста, один символ ключа, берутся их коды, находится XOR этих кодов а в список добавляется символ с получившимся кодом.

В конце просто все символы списка склеиваются в одну строку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы