数据通过 aes 文件传输损坏 python tkinter
Data getting corrupted over aes file transfer python tkinter
我正在开发一个项目,您可以在该项目中通过套接字发送文件,该文件经过 aes 加密。它可以加密数据并通过套接字发送它并解密它很好但是图像变得混乱下面是之前图像的示例以及如何更正之后的图像?
之前:
之后:
加密和解密在我创建的单独模块中,这就是它们被引用的原因,如下所示
加解密密码:
def encrypt(key, data, iv):
encryptor = AES.new(key, AES.MODE_CBC, iv)
return encryptor.encrypt(data)
def decrypt(key, data, iv):
decryptor = AES.new(key, AES.MODE_CBC, iv)
return decryptor.decrypt(data)
服务器代码:
s = socket.socket()
s.bind(("127.0.0.1", 5000))
s.listen(1)
c, addr = self.s.accept
name = c.recv(1024)
name = name.split("/")[-1]
newFile = open(self.curpath + name, "wb")
stop = False
while True:
data = c.recv(24*1024)
print(data[-4:])
if data[-4:] == "DONE":
break
data = decrypt(self.key, data, self.iv)
newFile.write(data)
print("STOP")
newFile.close()
客户代码:
s. = socket.socket()
s.connect(("127.0.0.1", 5000)
item = "Splash.png"
s.send(item)
with open(item, "rb") as fp:
while True:
chunk = fp.read(64*1024)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += " " * (16 - len(chunk) % 16)
s.send(encrypt(self.key, chunk, self.iv))
s.send("DONE")
print("Done")
通过使用@t.m.adam 评论,我能够使用 .rstrip(" ")
将软件正确地安装到 运行
我正在开发一个项目,您可以在该项目中通过套接字发送文件,该文件经过 aes 加密。它可以加密数据并通过套接字发送它并解密它很好但是图像变得混乱下面是之前图像的示例以及如何更正之后的图像?
之前:
之后:
加密和解密在我创建的单独模块中,这就是它们被引用的原因,如下所示
加解密密码:
def encrypt(key, data, iv):
encryptor = AES.new(key, AES.MODE_CBC, iv)
return encryptor.encrypt(data)
def decrypt(key, data, iv):
decryptor = AES.new(key, AES.MODE_CBC, iv)
return decryptor.decrypt(data)
服务器代码:
s = socket.socket()
s.bind(("127.0.0.1", 5000))
s.listen(1)
c, addr = self.s.accept
name = c.recv(1024)
name = name.split("/")[-1]
newFile = open(self.curpath + name, "wb")
stop = False
while True:
data = c.recv(24*1024)
print(data[-4:])
if data[-4:] == "DONE":
break
data = decrypt(self.key, data, self.iv)
newFile.write(data)
print("STOP")
newFile.close()
客户代码:
s. = socket.socket()
s.connect(("127.0.0.1", 5000)
item = "Splash.png"
s.send(item)
with open(item, "rb") as fp:
while True:
chunk = fp.read(64*1024)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += " " * (16 - len(chunk) % 16)
s.send(encrypt(self.key, chunk, self.iv))
s.send("DONE")
print("Done")
通过使用@t.m.adam 评论,我能够使用 .rstrip(" ")