-
Автор темы
- #1
Сидел-сидел и вдруг захотелось написать простейший XOR шифровальщик.
По Шеннону, такой алгоритм является абсолютно стойким при одноразовом использовании ключа.
Но, если использовать ключи многократно, то можно получить XOR исходных сообщений через coded_msg1 ^ coded_msg2. Покрутил я эту строку и так и не смог восстановить ключ.
Если кто-то покажет мне на примере как это делается - буду очень признателен. Несколько сообщений на русском языке, зашифрованных одним ключом из кода выше:
Python:
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