我试图用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)
我相信问题是我将每个洋葱层编码成一个字节数组,每次解密后都需要解码回utf-8字符串来读取信息。
但是在解密之间实现以下代码行
OnionOnlayerPeeLed3=OnInLayerPeeLed3.decode('utf-8')
导致以下错误
UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0x99:起始字节无效