1 Star 0 Fork 0

SQX/SWL-20184313

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
file_receive.py 1.67 KB
一键复制 编辑 原始数据 按行查看 历史
SQX 提交于 5年前 . 第三次实验
import socket
from gmssl import sm2
import os
# 收文件
def enc_send(message, sm2_crypt, s):
enc_message = sm2_crypt.encrypt(message.encode())
s.sendall(enc_message)
def dec_recv(sm2_crypt, s, l):
data = s.recv(l)
dec_data = sm2_crypt.decrypt(data)
return dec_data
private_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5'
public_key = 'B9C9A6E04E9C91F7BA880429273747D7EF5DDEB0BB2FF6317EB00BEF331A83081A6994B8993F3F5D6EADDDB81872266C87C018FB4162F5AF347B483E24620207'
my_sm2_crypt = sm2.CryptSM2(public_key=public_key, private_key=private_key)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 8001))
s.listen()
conn, address = s.accept()
his_public_key = conn.recv(512).decode()
conn.sendall(public_key.encode())
his_sm2_crypt = sm2.CryptSM2(public_key=his_public_key, private_key='')
file_name = dec_recv(my_sm2_crypt, conn, 1024).decode()
enc_send('成功接收文件名' + file_name, his_sm2_crypt, conn)
file_len = int(dec_recv(my_sm2_crypt, conn, 1024).decode())
enc_send('成功接收文件大小' + str(file_len), his_sm2_crypt, conn)
message = dec_recv(my_sm2_crypt, conn, file_len * 2)
enc_send('成功接收文件内容' + file_name, his_sm2_crypt, conn)
data = dec_recv(my_sm2_crypt, conn, 1024).decode()
print('收到对方消息:' + data)
enc_send('已收到文件:' + file_name, his_sm2_crypt, conn)
new_file_name = file_name
while os.path.exists(new_file_name):
new_file_name = new_file_name[0:new_file_name.rindex('.')] + '(1)' + new_file_name[new_file_name.rindex('.'):]
f = open(new_file_name, 'wb')
f.write(message)
f.close()
print('已收到' + file_name + '保存为' + new_file_name)
s.close()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/sun_wei_li/SWL-20184313.git
git@gitee.com:sun_wei_li/SWL-20184313.git
sun_wei_li
SWL-20184313
SWL-20184313
master

搜索帮助