2015-12-03 9 views
1

Я пытаюсь создать реализацию Python Ciphersaber 2, поскольку те, что я нашел в сети, как представляется, создают тарабарщину. Во время дешифрования мне нужно иметь xor единственный символ строки с ключом, который представлен целыми значениями, а затем возвращает этот результат в строковый символ. Обратите внимание, что я совершенно новичок в Python, поэтому не обращайте внимания на мои ужасные неудачи.Как я могу использовать x строковый символ с int в Python?

Вещи я пытался до сих пор:

plaintext[i] = ord(msg[i]^keystream[i] plaintext[i] = str(plaintext[i]), которые привели целых значений

и

plaintext[i] = ord(msg[i]^keystream[i] plaintext[i] = chr(plaintext[i]) что приводит к значениям у, \ фиксировано \ XF4 \ X07. Являются ли эти байтовые значения?

Цените помощь

ответ

0

Строк представлены ASCII значений (UTF-8, чтобы быть точным) в компьютере. Если вы хотите использовать обычный текст и ключевой поток, я рекомендовал вам преобразовать его в диапазон 26.

E.g. Ord ('а') составляет 97 & Ord ('б') 98 в ASCII

ord('a')^ord('b') = 97^98 = 3 
Note: 3 in ASCII is not an alphabet 
a-z lies in range 97 - 122 
A-Z lies in range 65 - 100 

Попробуйте преобразовать их в диапазоне от 26 первого (с использованием Ord ('A') для нижнего регистра и ord ('A') для верхнего регистра как по модулю). Создание шифра - Шаг 1:

ord('a') % 97 = 0 
ord('b') % 97 = 1 
0^1 = 1 

Теперь добавьте предыдущий результат к Ord ('а'), а затем преобразовать его в символ. Генерация шифра - Шаг 2:

chr(ord('a') + 1) = chr(97 + 1) = chr(98) = 'b' 

Аналогичным образом можно изменить процесс, чтобы расшифровкой.

P.S. Я не знаю алгоритм Ciphersaber.

 Смежные вопросы

  • Нет связанных вопросов^_^