密码学.费尔奈无效令牌发送加密信息时

2024-04-25 19:07:18 发布

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

我试图用套接字在本地网络上发送加密字符串密码学.fernet库,但是当接收到字节时,它抛出一个“密码学.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)

客户

^{2}$

客户机编码、加密,然后发送消息,客户机接收消息并解密。但是,服务器会立即正确地解密消息的其余部分,并阻止程序的运行。 奇怪的是,它在解密后有足够的时间在崩溃之前打印出来。有人知道为什么会这样吗?在

服务器控制台:

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

Tags: 服务器消息message客户机withsocketconnfile
1条回答
网友
1楼 · 发布于 2024-04-25 19:07:18

问题是由服务器中的while True循环引起的。当它收到数据时,它会再次经过循环,但不会等待新的数据。我修改了它,使它在处理消息后脱离循环。在

相关问题 更多 >