我试图通过加密将图像从一台pc发送到另一台pc。我在发送机上编码,它到达接收机没有问题。然而,当我试图解码它,它似乎总是返回错误…
while True:
data = connection.recv(2000000)
if data:
b= data.decode("utf-8")
b=decrypt(b,key)
print(b)
with open('encode.bin', "wb") as file:
file.write(b)
file = open('encode.bin', 'rb')
byte = file.read()
file.close()
decodeit = open('camera.jpeg', 'wb')
decodeit.write(base64.b64decode((byte)))
decodeit.close()
打印b得到:b'/9j/4AAQSkZJRgABAQAAAQ......oooA/9k='
我认为这很好很正常,因为当我把它粘贴到一个在线Base64 str到img工具中时,我得到了我发送的图片。错误是:TypeError: a bytes-like object is required, not 'str'
,指的是file.write(b)
线....我不知道是什么问题,但我坚信,这不是由于加密解密。可能与如何处理字符串数据有关。任何帮助都是感激的!提前感谢!
将字节串解码为UTF-8会得到一个字符串。您可能会看到来自其他地方的打印,因为print(b)
应该打印字符串。这就是file.write(b)
抱怨的原因。它期待字节,但b
是一个字符串。
我终于成功了,我删除了前两个字母(显然是b')和最后一个字符('),它工作得很好!
b = b[2:size - 1]
try:
image = base64.b64decode(b, validate=True)
with open("camera.jpeg", "wb") as f:
f.write(image)