python 通过套接字发送字符串时查看Base64编码图像

enxuqcxy  于 2023-04-04  发布在  Python
关注(0)|答案(2)|浏览(214)

我试图发送一个图像从一台电脑到另一台电脑加密.我在发送方机器上编码,它到达接收方机器没有问题.然而,当我试图解码它,它似乎总是返回错误...

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)行....我不能弄清楚是什么问题,但我坚信这不是由于加密解密.可能与如何处理字符串数据.任何帮助是赞赏!提前感谢!

kq0g1dla

kq0g1dla1#

将字节串解码为UTF-8会得到一个字符串。你可能会看到来自其他地方的打印,因为print(b)应该打印一个字符串。这就是为什么file.write(b)会抱怨。它需要字节,但b是一个字符串。

bprjcwpo

bprjcwpo2#

我终于成功了,我删除了前两个字母(显然是b ')和最后一个字符('),它工作得很好!

b = b[2:size - 1]
      try:
        image = base64.b64decode(b, validate=True)
        with open("camera.jpeg", "wb") as f:
              f.write(image)

相关问题