20183411 李丞灏 2020-2021 《python程序设计》 实验三 加密传输文件 实验报告

课程:《Python程序设计》

班级: 1834

姓名: 李丞灏

学号:20183411

实验教师:王志强老师

实验日期:2020年5月23日

必修/选修: 公选课

1.实验内容

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

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

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

(4)程序代码托管到码云。

2.实验过程及结果

本实验要求设计服务端和客户端,使得发送方能够加密向接收端发送文件,我使用RSA模块进行加密,可以自主

选择文件进行发送,接收方能够解密并自动保存。

代码如下

import socket

import rsa

with open('public.pem', 'r') as f:

pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())

with open('private.pem', 'r') as f:

privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 8001))

name = input('请输入要传输的文件名:')

f0 = open(name,mode='r',encoding='utf-8')

a = f0.readlines()

for row in a:

bytes(row,encoding = ('utf-8'))

info = rsa.encrypt(row.encode(),pubkey)

print(info)

s.sendall(info)

data = s.recv(1024)

print(data.decode())

s.close()

(发送方代码)

'''

学号:20183411

姓名:李丞灏

'''

import socket

import rsa

(pubkey,privkey) = rsa.newkeys(512)

pub = pubkey.save_pkcs1()

pri = privkey.save_pkcs1()

with open('pubkey.pem',mode = 'wb') as f,open('privkey.pem',mode = 'wb') as f1:

f.write(pub)

f1.write(pri)

pubkey = rsa.PublicKey.load_pkcs1(pub)

with open('private.pem', 'r') as prf:

pri = prf.read()

privkey = rsa.PrivateKey.load_pkcs1(pri)

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',8001))

s.listen()

with open('serve_got.txt', 'w') as f:

pass

conn,address = s.accept()

data = conn.recv(1024)

info = rsa.decrypt(data, privkey).decode()

print(info)

with open('serve_got.txt', mode='a') as f:

f.write(info)

f.close()

conn.sendall((bytes('已收到文件:',encoding = ('utf-8')) + bytes(info,encoding = ('utf-8'))))

s.close()

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

这次实验,是一场血泪史,我在一个个bug中疲于奔命,却总有更多的bug站出来摧残我的身心,下面有请这些bug们:

问题一:无法加密

导入了RSA加密模块,但在加密的过程中,程序指出需要将导入的文件信息改为字节,而不是字符串,在加入了转换代码

后,又不厌其烦的指出,还是转换不了,需要指定的格式,用decode、encode等一顿突突,还是出现了问题,如此反复

由于问题太多,场面血腥,本人不记仇,因此不多赘述。

解决方法:

使用格式转换的代码,将txt逐字符转换成字节,再传输给加密部分进行加密,并在加密后封装为统一格式传输。

问题二:无法解密

好不容易搞定了加密模块,解密模块又出现了问题,这次有图为证:

上面一样,说需要一个类似字节的格式,于是我将其转换成了字节,以为万事大吉,不料运行时又弹出了提示,说需要格

式,用decode转换,还是不行,因为bytes不支持decode,到了这时,我已经经历了无数打击,于是淡定地关上了电脑,

平复下心情。

解决方法:

分析发送方传输来的格式,然后再根据接收方解密的要求,进行格式变换,最终完美解决!

其他(感悟、思考等)

虽然实验中困难种种,但还是通过各种方法一路披荆斩棘,完成了实验,在最后成功的时候内心是非常喜悦的,

这是一种痛并快乐着的感觉,复杂也简单。如果让我对python说一句话,我想说:人生苦短;如果有再来一次的机

会,我还是会说:我用python!如果非要加上一个期限的话,我希望是:一辈子!!!

参考资料

蓝墨云班课

网上的经验

基于python的文件加密传输系统 毕业论文_20183411 李丞灏 2020-2021 《python程序设计》 实验三 加密传输文件 实验报告...相关推荐

  1. bpsk传输系统实验matlab,实验三 BPSK 传输系统综合实验 2

    通信原理实验 实验三 BPSK 传输系统综合实验 一.实验原理 (一)BPSK调制 理论上二进制相移键控(BPSK)可以用幅度恒定,而其载波相位随着输入信号m(1.0码)而改变,通常这两个相位相差18 ...

  2. python个人自动化_GAD名人堂丨方李志专访 :于Python的UI自动化测试探索者

    个人简介 方李志,UI自动化测试资深专家,腾讯游戏研发部品质管理深圳团队负责人,十五年来一直从事UI自动化测试研究与实施.开发过UI自动化测试框架.分布式自动化测试平台等,曾获得卓越研发质量铜奖.EV ...

  3. 基于jumpserver堡垒机使用sftp传输文件

    公司服务器一般都是需要通过跳板机进行登录: 传输文件可以用sftp命令,但是sftp命令也是和服务器打通一个传输文件的通道,那么想要往服务器上传文件,首先需要打通jumpserver的通道,也就是说需 ...

  4. 在线传输文件的方法有哪些?镭速云帮您领略最快文件传输的攻略!

    在线传输文件的方法有哪些?在日常的工作中,同事之间互相传输文件是办公室里最常见的一件事情了.那你用的是什么方法呢?QQ?蓝牙?如果你仅仅知道这些,那就真的out了. 这些传输工具的确挺方便的,但是蓝牙 ...

  5. Linux服务器向远程FTP传输文件

    通过ftp传输数据时,连接未加密.要进行安全的数据传输,请使用SCP. 为了能够传输文件,您必须至少具有对源文件的读取权限和对目标系统的写入权限. 传输大文件时,建议在屏幕或tmux会话中运行ftp命 ...

  6. 两台linux之间传输文件的方法

    scp传输 当两台Linux主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者 ...

  7. 两台Linux系统之间传输文件的几种方法

    scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者 ...

  8. ActiveMQ传输文件的几种方式原理与优劣

    本文讨论ActiveMQ传输文件的几种方法的原理及其利弊,作为消息发送.直接传输文件.使用ftp或http中转.最后介绍扩展ActiveMQ实现自定义文件传输方式,讨论如何实现高效的文件传输. 作为消 ...

  9. 使用Xftp实现Windows与Linux服务器实现快速传输文件

    场景 第一次在Linux服务器上部署项目,看完这篇轻松应对: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/85340802 简单 ...

最新文章

  1. loadrunner 如何做关联
  2. HtmlDocument
  3. 微软日本每周只上四天班,销售额提升39.9%!网友:老板快来看啊
  4. 【堆栈】最近有兴趣的几个问题
  5. 你对5G技术“低延时”可能有些误解——专访虎牙5G 首席架构师林正显
  6. 思维导图软件下载与安装 记录xmind安装过程
  7. 【优化算法】飞蛾优化算法 (MFO)【含Matlab源码 1081期】
  8. cocos2d 屏幕適配_cocos2dx 3.2 屏幕适配的理解
  9. Quartz 定时任务时间表达式说明
  10. IDEA安装yarn
  11. matlab圆孔孔壁应力集中,matlab 有限元分析平面问题的小孔应力集中问题的程序 - 下载 - 搜珍网...
  12. android不root截图,某安卓手机无需root就可以被任意应用截屏及解决方案
  13. HDU 1847 Good Luck in CET-4 Everybody! 尼姆博弈
  14. 华为魔术2手机拆机图解_荣耀Magic2做工如何?荣耀Magic2拆解图解评测 (全文)
  15. 【STM32】TCL2543CN 12位11通道ADC芯片stm驱动程序,使用32自带SPI实现
  16. crout分解计算例题_如何计算有理函数的不定积分
  17. 弥知AR试衣重磅上线!
  18. 微信小程序遇到的问题及解决办法
  19. ADSL MODEM用户名和密码大全
  20. 解决 SQL事务回退中 从未在此会话中创建保存点 ‘S1‘ 或者该保存点无效

热门文章

  1. 汪子熙的SAP技术文章分类合集
  2. 通过公式处理SAP Analytics Cloud里的dimension,使其符合Date格式需求
  3. 如何关闭Windows10任务栏里的应用图标
  4. 一个应用被部署到SAP云平台后,启动时打印的日志
  5. Fiori configuration edit also needs enqueue
  6. SAP CRM fiori application delete if only one note header
  7. Organization model change - product line item EC
  8. Equipment download - No data contained in BDoc
  9. 如何在Marketing Cloud里创建extension field扩展字
  10. Cloud for Customer Mashup debug in IFrame