110
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2323
姓名: 李冠呈
学号:20232305
实验教师:王志强
实验日期:2024年4月17日
必修/选修: 公选课
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
1.创建服务端
2.创建客户端
3.进行简单加密
客户端
import socket
from pyDes import *
import binascii
def des_encrypt(s, KEY):
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en).decode()
def des_descrypt(s, KEY):
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de.decode()
tcpclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpclient.connect(("192.168.10.60", 2024))
while True:
data = input('>>>').strip()
ciphertext = des_encrypt(data, "12345678")
tcpclient.send(ciphertext.encode())
ret = tcpclient.recv(1024)
plaintext = des_descrypt(ret.decode(), "12345678")
print("Received from server:", plaintext)
tcpclient.close()
服务器端
import socket
from pyDes import *
import binascii
def des_encrypt(s, KEY):
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(s, padmode=PAD_PKCS5)
return binascii.b2a_hex(en).decode()
def des_descrypt(s, KEY):
secret_key = KEY
iv = secret_key
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)
return de.decode()
tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpserver.bind(("192.168.10.60", 2024))
tcpserver.listen(5)
while True:
conn, addr = tcpserver.accept()
print(conn)
while True:
try:
data = conn.recv(1024)
if not data:
break
print("收到加密数据:", data.decode("utf-8"))
decrypted_data = des_descrypt(data.decode("utf-8"), "12345678")
print("解密后的数据:", decrypted_data)
ret_data = input("请回复:")
encrypted_ret_data = des_encrypt(ret_data, "12345678")
conn.send(encrypted_ret_data.encode('utf-8'))
except ConnectionResetError:
print("连接断开")
break
except Exception as e:
print("发生异常:", e)
break
conn.close()
实验结果


问题一:不知道如何将发送的信息加密。
解决方法:在CSDN上查询博客。