Как на 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 символа), а потом поддавался обратной дешифровке?