144
社区成员




创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
编码并与同学进行通信
import socket
import os
import DesModule
if os.path.exists("Host"):
file_1=open("Host","r+")
else:
file_1=open("Host", "w+")
file_1.write("Hi!My name is Dai Tianrui.")
file_1.seek(0)
inf=DesModule.des_encrypt(file_1.readline(),"12345678")
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("172.16.224.229",8010))
s.listen()
conn,address=s.accept()
data=conn.recv(1024)
print("The information received from the client is:",DesModule.des_descrypt(data.decode(),"12345678"))
conn.sendall(inf.encode())
file_1.close()
s.close()
import socket
import os
import DesModule
if os.path.exists("Client"):
file_2 = open("Client", "r+")
else:
file_2 = open("Client", "w+")
file_2.write("Hi!What is your name?")
file_2.seek(0)
inf = DesModule.des_encrypt(file_2.readline(), "12345678")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("172.16.214.136",8010))
s.sendall(inf.encode())
data = s.recv(1024)
plaintext = DesModule.des_descrypt(data.decode(), "12345678")
print("The received data is:", plaintext)
file_2.close()
s.close()
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()
if __name__ == "__main__":
ciphertext = des_encrypt("hello, world!", "12345678")
print("密文:",ciphertext)
plaintext = des_descrypt(ciphertext, "12345678")
print("解密后的明文:", plaintext)
无