日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2023/12/19 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于python的文件加密传输系统 毕业论文_20183411 李丞灏 2020-2021 《python程序设计》 实验三 加密传输文件 实验报告... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

20183411 李丞灝 2020-2021 《python程序設(shè)計》 實驗三 加密傳輸文件 實驗報告

課程:《Python程序設(shè)計》

班級: 1834

姓名: 李丞灝

學(xué)號:20183411

實驗教師:王志強老師

實驗日期:2020年5月23日

必修/選修: 公選課

1.實驗內(nèi)容

(1)創(chuàng)建服務(wù)端和客戶端,選擇一個通信端口,用Python語言編程實現(xiàn)通信演示程序;

(2)要求包含文件的基本操作,例如打開和讀寫操作。

(3)要求發(fā)送方從文件讀取內(nèi)容,加密后并傳輸;接收方收到密文并解密,保存在文件中。

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

2.實驗過程及結(jié)果

本實驗要求設(shè)計服務(wù)端和客戶端,使得發(fā)送方能夠加密向接收端發(fā)送文件,我使用RSA模塊進(jìn)行加密,可以自主

選擇文件進(jìn)行發(fā)送,接收方能夠解密并自動保存。

代碼如下

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('請輸入要傳輸?shù)奈募?#xff1a;')

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()

(發(fā)送方代碼)

'''

學(xué)號: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們:

問題一:無法加密

導(dǎo)入了RSA加密模塊,但在加密的過程中,程序指出需要將導(dǎo)入的文件信息改為字節(jié),而不是字符串,在加入了轉(zhuǎn)換代碼

后,又不厭其煩的指出,還是轉(zhuǎn)換不了,需要指定的格式,用decode、encode等一頓突突,還是出現(xiàn)了問題,如此反復(fù)

由于問題太多,場面血腥,本人不記仇,因此不多贅述。

解決方法:

使用格式轉(zhuǎn)換的代碼,將txt逐字符轉(zhuǎn)換成字節(jié),再傳輸給加密部分進(jìn)行加密,并在加密后封裝為統(tǒng)一格式傳輸。

問題二:無法解密

好不容易搞定了加密模塊,解密模塊又出現(xiàn)了問題,這次有圖為證:

上面一樣,說需要一個類似字節(jié)的格式,于是我將其轉(zhuǎn)換成了字節(jié),以為萬事大吉,不料運行時又彈出了提示,說需要格

式,用decode轉(zhuǎn)換,還是不行,因為bytes不支持decode,到了這時,我已經(jīng)經(jīng)歷了無數(shù)打擊,于是淡定地關(guān)上了電腦,

平復(fù)下心情。

解決方法:

分析發(fā)送方傳輸來的格式,然后再根據(jù)接收方解密的要求,進(jìn)行格式變換,最終完美解決!

其他(感悟、思考等)

雖然實驗中困難種種,但還是通過各種方法一路披荊斬棘,完成了實驗,在最后成功的時候內(nèi)心是非常喜悅的,

這是一種痛并快樂著的感覺,復(fù)雜也簡單。如果讓我對python說一句話,我想說:人生苦短;如果有再來一次的機

會,我還是會說:我用python!如果非要加上一個期限的話,我希望是:一輩子!!!

參考資料

藍(lán)墨云班課

網(wǎng)上的經(jīng)驗

總結(jié)

以上是生活随笔為你收集整理的基于python的文件加密传输系统 毕业论文_20183411 李丞灏 2020-2021 《python程序设计》 实验三 加密传输文件 实验报告...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。