Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无效的fernet令牌_Python_Sockets_Encryption - Fatal编程技术网

Python 无效的fernet令牌

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.

您好,我正试图在Python中加密通过套接字发送的数据(使用cryptography.fernet),但每当我运行代码将数据发送回时,服务器端就会出现cryptography.fernet.invalidtoken异常。我可以在本地用相同的密钥解密令牌,所以我认为它一定是套接字。以下是我使用的代码:

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)。