python多处理.连接报告“AuthenticationError:接收到的摘要错误”

2024-05-29 04:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python应用程序,它创建一个子进程,打开一个套接字与它通信,然后创建一个多处理.连接对象在套接字上。connection对象使用一个共享密钥(随机生成)和hmac来确保不允许其他进程通过连接进行通信。在

在Linux上,这非常有效。在windows上,我得到一个错误:

multiprocessing.AuthenticationError: digest received was wrong

密钥是随机生成的一串位,在由其stdin发送到子进程之前,将对其进行pickle处理:

^{pr2}$

我仔细检查了键是否与连接的两端匹配:

 print "key:", ' '.join([str(ord(x)) for x in authkey])

服务器启动方式:

 l = multiprocessing.connection.Listener(
         ('localhost', int(port)), authkey=authkey)

..客户机以以下方式启动:

 c = multiprocessing.connection.Client(
         ('localhost', int(port)), authkey=authkey)

这两个进程运行在同一台机器上,使用相同版本的python。在

更奇怪的是,我发现如果我修复了密钥(比如authkey='test'),那么我在第一次运行程序时仍然会得到AuthenticationError,但在随后的运行中不会出现。在


Tags: 对象应用程序localhost进程portlinuxwindows方式
1条回答
网友
1楼 · 发布于 2024-05-29 04:32:06

解决方案似乎是使用os.urandom来生成密钥,而不是上面所示的方法。我不知道为什么在这两种情况下,我们传递随机字节串都会有任何影响。从安全角度来看,该解决方案也更为正确,因为getrandbits不是用于加密的。在

相关问题 更多 >

    热门问题