Как на Python реализовать обратимое XOR-шифрование на основе ограниченного алфавита? Имеется ограниченный алфавит. Допустим, это буквы и цифры. То есть всего 62 символа. В таком случае для шифрования нам достаточно 6 бит.
Есть слово, которое нужно зашифровать и ключ. # Составляем словарь
def form_dict():
alphabet = list(ascii_letters) + list(digits)
return dict([(i, alphabet[i]) for i in range(len(alphabet))])
# Разбираем слово и ключ
def encode_val(word):
d = form_dict()
return [k for c in word for k, v in d.items() if v == c]
# Шифруем слово:
def comparator(value, key):
return dict([(index, list(character))
for index, character in enumerate(zip(value, cycle(key)))])
def full_encode(value, key):
d = comparator(value, key)
l = len(form_dict())
return [(v[0] ^ v[1]) % l for v in d.values()]
def full_decode(value, key):
d = comparator(value, key)
l = len(form_dict())
return [(v[0] - v[1]) % l for v in d.values()]
#шифруем
word = 'habrahabrru'
key = 'occaZZion9'
print 'Слово: ' + word
print 'Ключ: ' + key
key_encoded = encode_val(key)
value_encoded = encode_val(word)
encoded_text = full_encode(value_encoded, key_encoded)
#пытаемся расшифровать
decoded = full_decode(encoded_text, key_encoded)
При этом текст отлично шифруется и расшифруется.
Но, если расширить алфавит до 64 символов (добавить, например, точку, запятую и деффис), то на шифрование надо уже 7 бит, и текст начинает шифроваться неправильно, после чего не расшифровывается.
Как реализовать обратимое XOR-шифрование, чтобы зашифрованный текст обязательно состоял из ограниченного алфавита (допустим, 64 символа), а потом поддавался обратной дешифровке?

21 Авг 2019 в 07:14
836 +1
0
Ответы
Нет ответов
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир