Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Поиск ключа гаммирования по шифрограммам

  • Автор темы Автор темы knyaz228
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
7 Янв 2018
Сообщения
233
Реакции
34
Сидел-сидел и вдруг захотелось написать простейший XOR шифровальщик.
Python:
Expand Collapse Copy
class XorEncrypt:
    key: str

    def __init__(self, key: str):
        if not key:
            raise ValueError("Key must not be empty.")
        self.key = key

    def xor(self, message: str) -> str:
        if len(self.key) < len(message):
            raise ValueError("Key length shouldn't be less than the message length.")
        return ''.join(chr(ord(m) ^ ord(k)) for m, k in zip(message, self.key))

По Шеннону, такой алгоритм является абсолютно стойким при одноразовом использовании ключа.
Но, если использовать ключи многократно, то можно получить XOR исходных сообщений через coded_msg1 ^ coded_msg2. Покрутил я эту строку и так и не смог восстановить ключ.

Если кто-то покажет мне на примере как это делается - буду очень признателен. Несколько сообщений на русском языке, зашифрованных одним ключом из кода выше:
  • ўЉіѐтЪXAѻТѷѥѴЌѹјWзѐЎѸѰ{wѕѼСёукУHџћBуѿlѺѧЅbЂѿѩѻЅѽѺќи^
  • ѕѷџТмёYѕёџЅyaјѳDWзѐЎѸЄuѥaѽњЯисћѝJCѸWѿѽѴѢѹЁcЀѩѴѽЁѲљяЮѓЉЀчЪЏѕ
  • џЉћљWќщєЦBѽѩѰЌѽHъцBѱЍѸѯДa{DќзхѕЫХѝѐWѳѷѽѥѺbѽЁѯѿѱЊѿФWP
 
Назад
Сверху Снизу