20221218 2022-2023-2 《Python程序设计》实验三报告

jywfang 2023-04-20 22:46:28

课程:《Python程序设计》
班级: 2212
姓名: 党万方
学号:20221218
实验教师:王志强
实验日期:2023年4月13日
必修/选修: 公选课

1.实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

2. 实验过程及结果

1.导入加密DesModule模块

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)

2.编写服务器程序

import socket
import os
from DesModule import *

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.1.107", 8000))
s.listen()
conn, address = s.accept()
data = conn.recv(1024)
ciphertext = des_encrypt("goodnight", "wff12345")
print("解密前", data.decode())
plaintext = des_descrypt(data, "12345678")
print("来自客户端的信息是", plaintext)
if os.path.exists("C:\\Users\\党万方\\PycharmProjects\\pythonProject2\\dwf"):
    file = open("dwf", 'a+')
    file.write(plaintext)
else:
    file = open("dwf", 'w+')
    file.write(plaintext)
    file.seek(0)
file.close()
conn.sendall(ciphertext.encode())

3.编写用户端程序

import os
import socket

from DesModule import des_encrypt, des_descrypt

if os.path.exists("C:\\Users\\党万方\\PycharmProjects\\pythonProject2\\dwf"):
    file1 = open("dwf", 'r+')
else:
    file1 = open("dwf", 'w+')
    file1.write("howsitgoing")
    file1.seek(0)
howsitgoing = file1.readline()
ciphertext = des_encrypt(howsitgoing, "zmh12345")

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.1.104", 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()

4.运行结果

5.上传gitee

 

 3. 实验过程中遇到的问题和解决过程

1.des文件出问题,下载后解决

其他(感悟、思考等)

好难难难难难......

 

 

...全文
125 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

144

社区成员

发帖
与我相关
我的任务
社区描述
开展Python教学和技术交流
python 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧