20221127汪国辉 2022-2023-2 《Python程序设计》实验三报告

里林 2023-04-19 20:40:33

20221127汪国辉 2022-2023-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2211
姓名: 汪国辉
学号:20221127
实验教师:王志强
实验日期:2023年4月13日
必修/选修: 公选课

1.实验内容

  • 创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

  • 要求包含文件的基本操作,例如打开和读写操作。

  • 要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

  • 程序代码托管到码云。

2. 实验过程及结果

①加密传输

  • 创建服务器

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)

②运行结果

 

③将代码上传码云

 

 

 

 

 

 

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

  • 问题1:des的库函数一直下载失败,程序无法运行
  • 问题1解决方案:卸载360杀毒软件!!!
  • 问题2:填写正确ip地址后发送信息积极拒绝
  • 问题2解决方案:关闭防火墙

参考资料

py实现DES加解密详解

《Java程序设计与数据结构教程(第二版)》

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

144

社区成员

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

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