1 Star 0 Fork 0

SQX/SWL-20184313

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
file_send.py 1.60 KB
一键复制 编辑 原始数据 按行查看 历史
SQX 提交于 5年前 . 第三次实验
import socket
from gmssl import sm2
# 发文件
def enc_send(message, sm2_crypt, s):
if type(message) != type(b'ab'):
message = message.encode()
enc_message = sm2_crypt.encrypt(message)
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.connect(('127.0.0.1', 8001))
while True:
file_name = input('请输入要打开的文件:')
try:
f = open(file_name, 'rb')
except:
print('找不到' + file_name)
continue
break
message = f.read()
f.close()
file_len = str(len(message))
s.sendall(public_key.encode())
his_public_key = s.recv(512).decode()
his_sm2_crypt = sm2.CryptSM2(public_key=his_public_key, private_key='')
enc_send(file_name, his_sm2_crypt, s)
data = dec_recv(my_sm2_crypt, s, 1024).decode()
print('收到对方消息:' + data)
enc_send(file_len, his_sm2_crypt, s)
data = dec_recv(my_sm2_crypt, s, 1024).decode()
print('收到对方消息:' + data)
enc_send(message, his_sm2_crypt, s)
data = dec_recv(my_sm2_crypt, s, 1024).decode()
print('收到对方消息:' + data)
enc_send('发送完毕', his_sm2_crypt, s)
data = dec_recv(my_sm2_crypt, s, 1024).decode()
print('收到对方消息:' + data)
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

搜索帮助