因此,我有一个程序,应该通过TCP套接字连接两台机器。我正在尝试用RSA密钥来实现加密,使用“密码学”库。但是,一旦我运行了代码,我就会得到cryptography.fernet.InvalidToken错误。下面是我的代码,有人能给我解释一下为什么会出现这个错误吗?如何解决呢?
我的代码:(客户)
import socket
SERVER = "127.0.0.1"
PORT = 2022
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER, PORT))
client.sendall(bytes("This is from Client",'UTF-8'))
#===[Now, the encryption part]===#
key_file = open("key.key","rb")
key = key_file.read()
f = Fernet(key)
count = 0
while True:
if count > 0:
out_data = str(input("|>"))
tokenOut = f.encrypt(bytes(out_data,'utf-8'))
print(tokenOut)
client.sendall(bytes(str(tokenOut),'utf-8'))
if out_data=='bye':
break
in_data = bytes(str(client.recv(1024)),'utf-8')
# print(f"[{count}> ",in_data," <]")
tokenIn = f.decrypt(in_data)
print("From Server :" ,tokenIn)
count += 1
client.close()发布于 2022-08-05 08:19:46
我还没有测试您的代码,但我的第一个问题是您发送了哪些数据?如果它超过1024,这将导致它被拆分成多个消息,这将使您的令牌无效,原因是这里的行:
in_data = bytes(str(client.recv(1024)),'utf-8')如果您有大量数据,可以尝试增加这个值,例如:
in_data = bytes(str(client.recv(4096)),'utf-8')附带说明:您使用的是使用AES的Fernet。
AES对称加密和RSA是非对称加密-更多信息在这里:对称加密)
告诉我们你怎么样了!
https://stackoverflow.com/questions/71420480
复制相似问题