代码之家  ›  专栏  ›  技术社区  ›  SnowTurtle96

解密问题(Python)

  •  0
  • SnowTurtle96  · 技术社区  · 7 年前

    我试图用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字符串来读取信息。

    但是在解密之间实现以下代码行

    OnionOnlayerPeeLed3=OnInLayerPeeLed3.decode('utf-8')

    导致以下错误

    UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0x99:起始字节无效

    0 回复  |  直到 7 年前