Python 无效的fernet令牌
您好,我正试图在Python中加密通过套接字发送的数据(使用cryptography.fernet),但每当我运行代码将数据发送回时,服务器端就会出现cryptography.fernet.invalidtoken异常。我可以在本地用相同的密钥解密令牌,所以我认为它一定是套接字。以下是我使用的代码:Python 无效的fernet令牌,python,sockets,encryption,Python,Sockets,Encryption,您好,我正试图在Python中加密通过套接字发送的数据(使用cryptography.fernet),但每当我运行代码将数据发送回时,服务器端就会出现cryptography.fernet.invalidtoken异常。我可以在本地用相同的密钥解密令牌,所以我认为它一定是套接字。以下是我使用的代码: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host,port)) print colored("listening.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
print colored("listening...","red")
s.listen(10)
conn,addr = s.accept()
print colored("connected!","red")
data = conn.recv(1024)
print data
抱歉,我没有提供加密功能或异常。我急于把这个拿出来。不管怎样,我已经找到了解决办法。问题是conn.recv()中定义的缓冲区太小,接收到的令牌被截断。将缓冲区大小增加到大于原始1024的值可以修复此问题。如果您提供所看到的异常,可能会有所帮助。如果您询问有关加密异常的问题,则不会显示任何相关代码。我只是惊讶地摇摇头……你所描述的是一种不正确且脆弱的数据读取方法。无法保证
conn.recv(n)
将读取n字节的数据,即使您发送了n个或更多字节。相反,您需要一个循环来读取任何可用的内容,直到您检测到消息的结尾(可能通过检测EOF)。