144
社区成员




课程:《Python程序设计》
班级: 2211
姓名: 汪国辉
学号:20221127
实验教师:王志强
实验日期:2023年4月13日
必修/选修: 公选课
创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
要求包含文件的基本操作,例如打开和读写操作。
要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
程序代码托管到码云。
创建服务器
import socket
import os
from DesModule import *
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("192.168.43.152",8000))
s.listen()
conn,address = s.accept()
data = conn.recv(1024)
ciphertext = des_encrypt("I am Wang Guohui 20221127","12345678")
print("解密前",data.decode())
plaintext = des_descrypt(data,"12345678")
print("来自客户端的信息是",plaintext)
if os.path.exists("C:\86183\PycharmProjects\pythonProject8\mima"):
file1 = open("mima",'a+')
file1.write(plaintext)
else:
file1 = open("mima",'w+')
file1.write(plaintext)
file1.seek(0)
file1.close()
conn.sendall(ciphertext.encode())
import socket
import os
from DesModule import *
if os.path.exists("C:\86183\PycharmProjects\pythonProject8\mima"):
file1 = open("mima", 'r+')
else:
file1 = open("mima", 'w+')
file1.write("I am Wang Guohui 20221127")
file1.seek(0)
mima = file1.readline()
ciphertext = des_encrypt(mima, "12345678")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.43.155", 8000))
s.sendall(ciphertext.encode())
data = s.recv(1024)
print("解密前", data.decode())
plaintext = des_descrypt(data, "12345678")
print("从服务器接受的数据是:", plaintext)
file1.write(plaintext)
file1.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)
《Java程序设计与数据结构教程(第二版)》