gpt4 book ai didi

python - 通过网络发送加密消息时的 Cryptography.fernet.InvalidToken

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:20 30 4
gpt4 key购买 nike

我正在尝试使用套接字和 cryptography.fernet 库通过本地网络发送加密字符串,但是当接收到字节时,它会抛出“cryptography.fernet.InvalidToken”错误。如果我在一个文件中加密和解密,它确实有效,但如果我在本地或两台不同的计算机上托管服务器和客户端,它就不起作用。

服务器

    import socket
from cryptography.fernet import Fernet
crypt = Fernet('sqcyNL5kz2mxWb1KL2QSZWY-GCERE-scEgWBbvq9CCk=')
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((host, port))
s.listen(10)
conn, addr = s.accept()
with conn:
while True:
messageEncrypt = conn.recv(2048)
message = crypt.decrypt(messageEncrypt, None).decode()
print(message)

客户端

    import socket
from cryptography.fernet import Fernet
crypt = Fernet('sqcyNL5kz2mxWb1KL2QSZWY-GCERE-scEgWBbvq9CCk=')
message = 'sentence'
messageEncode = message.encode()
messageEncrypt = crypt.encrypt(messageEncode)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(messageEncrypt)
s.close()

客户端编码、加密,然后发送消息,客户端接收消息并解密。服务器确实正确解密并打印了消息,但立即崩溃,阻止了程序的其余部分运行。奇怪的是,它在解密后有足够的时间进行打印,然后才崩溃。有谁知道为什么会发生这种情况?

服务器控制台:

sentence
Traceback (most recent call last):
File "E:/Google Drive/School/###/###/python/project/morseSrv.py", line 50, in <module>
message = crypt.decrypt(messageEncrypt).decode()
File "C:\Python\lib\site-packages\cryptography\fernet.py", line 74, in decrypt
timestamp, data = Fernet._get_unverified_token_data(token)
File "C:\Python\lib\site-packages\cryptography\fernet.py", line 92, in _get_unverified_token_data
raise InvalidToken
cryptography.fernet.InvalidToken

Process finished with exit code 1

最佳答案

该问题是由服务器中的 while True 循环引起的。当它收到数据时,它会再次执行循环,但不会等待新数据。我已将其修改为在处理消息后跳出循环。

关于python - 通过网络发送加密消息时的 Cryptography.fernet.InvalidToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844402/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com