Проблемы с получением правильного вывода кода? - PullRequest
0 голосов
/ 31 октября 2019

Исходное шифрование выглядит следующим образом (что я уже сделал): для каждой буквы в ключе и каждой буквы в открытом тексте (они имеют одинаковую длину) вы вычисляете значения ascii, находите результат XOR, конвертируете эток десятичной дроби, добавьте 32 к этому значению и затем преобразуйте обратно в символ. Символ будет зашифрованным. ,

key = this is a cool key plaintext = Wonderland is cool ciphertext= C''7e;?a/dc&<lc$*5

def decryption(ciphertext,key):
 plaintext = ""

  for k in range(len(ciphertext)):
    i = ciphertext[k]
    j = key[k]


    val = xor_calc(chr(ord(i)-32), chr(ord(j)-32))
    val = chr(ord(xor)+ 32)
    plaintext += val

после расшифровки я получаю: onderland это круто

, очевидно, должен совпадать с исходным открытым текстом, дополнительно с другими шифрами и ключами, в которых отсутствуют буквы. Мое шифрование работает хорошо, хотя мои ответы совпадают с тем, какими должны быть результаты. Буду признателен за любую помощь!

Забыл упомянуть, что у меня есть функция xor_calc, которая принимает шифр и ключевые буквы, конвертирует в ascii и вычисляет результаты XOR и возвращает обратно в char

1 Ответ

1 голос
/ 31 октября 2019

Упрощенный вами расчет xor сработал для меня:

xor = chr((ord(i)-32) ^ (ord(j)-32) + 32)

На самом деле, если я бегу decryption(plaintext,key), я получаю ваши ciphertext;если запустить decryption(ciphertext,key), я получу ваш plaintext. (Это имеет смысл, поскольку xor является обратимым.)

...