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

我正在尝试使用socket和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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值