Проблема дешифрования (Python) - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать луковый маршрутизатор в python, где каждое сообщение будет зашифровано три раза перед отправкой на 3 узла для расшифровки.

В тесте, который я настроил ниже, я шифрую свое сообщениетри раза, но после расшифровки я просто получаю мусор.Я думаю, что это может быть связано с порядком, в котором я применяю заполнение или кодирование / декодирование байтов.

 simpleMessage = "Hello!!!!!"
    CMD1 = "MSG"
    CMD2 = "FWD"
    CMD3 = "FWD"

    messagePackage = (CMD1, simpleMessage)
    messagePackage = str(messagePackage).encode('utf-8')
    messagePackage = self.padder(messagePackage)
    onionLayer1 = encryption.symmetricEncryption(key1[0], key1[1], messagePackage)

    messagePackage2 = (CMD2, onionLayer1)
    messagePackage2 = str(messagePackage2).encode('utf-8')
    messagePackage2 = self.padder(messagePackage2)

    onionLayer2 = encryption.symmetricEncryption(key2[0], key2[1], messagePackage2)

    messagePackage3 = (CMD3, onionLayer2)
    messagePackage3 = str(messagePackage3).encode('utf-8')
    messagePackage3 = self.padder(messagePackage3)

    onionLayer3 = encryption.symmetricEncryption(key3[0], key3[1], messagePackage3)

    onionLayerPeeled3 = encryption.symmetricDecrypt(key3[0], key3[1], onionLayer3)
    onionLayerPeeled2 = encryption.symmetricDecrypt(key2[0], key2[1], onionLayerPeeled3)
    onionLayerPeeled1 = encryption.symmetricDecrypt(key1[0], key1[1], onionLayerPeeled2)

The debugger shows the state of the message after each decryption

Я считаю,проблема заключается в том, что я кодирую каждый луковый слой в байтовый массив, и мне нужно будет декодировать обратно в строку utf-8, чтобы читать информацию после каждого дешифрования.1013 *

onionLayerPeeled3 = onionLayerPeeled3.decode ('utf-8')

В результате возникает следующая ошибка

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0x99 в позиции0: неверный начальный байт

Любая помощь / совет высоко ценится

...