题目编号:GFSJ1229
解题过程
1. 附件下载是三个压缩包A.zip B.zip C.zip和一个python程序Three.py
2. A.zip可以直接解压出来,内容如下:
```
'2022-08-27 20:16:04.246131' Func A0*X0+B0
'2022-08-27 20:16:05.116859' Read_Data A0.txt->A0(28829613228241459)
'2022-08-27 20:16:06.097964' Secret_Share A0
'2022-08-27 20:16:07.022455' Get A00(200254991086689) A01(200241552690281)
'2022-08-27 20:16:07.925862' Get X00(200058430391504) X01(200401773940794)
'2022-08-27 20:16:09.077771' Mul_loc_compute A0,X0->C00
'2022-08-27 20:16:10.764928' RGet C02(924422050091355025836012334663090)
'2022-08-27 20:16:11.213530' ReShare C00(random mask is 507412160912)
'2022-08-27 20:16:12.153062' Get B00(199957680670222) B01(200362172648094)
'2022-08-27 20:16:13.100727' Add_loc_compute C00,B00->Y00
'2022-08-27 20:16:13.281906' ReShare Y00(random mask is -1008362525723)
'2022-08-27 20:16:14.017485' RGet Y02(924422050091362838179268571917871)
'2022-08-27 20:16:17.000001' Open Y00
'2022-08-27 20:16:17.000101' RGet Y01(12163251699969281466186532960410)
'2022-08-27 20:16:17.000299' Cyberloafing!!
'2022-08-27 20:16:17.004194' ReBuild Y0
'2022-08-27 20:16:17.013270' Save_Data
```
3. B.zip 和C.zip有密码,查看Three.py,代码加了注释后如下:
```Python
import datetime
import numpy as np
# 协议类,用于处理多方参与的加密计算
class Protocol:
def __init__(self, party_num):
# 初始化协议类,指定当前参与方编号 (party_num: 0, 1, 或 2)
self.pn = party_num # 参与方编号 (party_num: 0, 1, 2)
def Read_Data(self, path):
# 读取数据文件中的内容,尝试将其转换为数值(整数或浮点数)
data = open(path).readline().strip() # 从文件中读取一行数据并去除首尾空格
try:
if '.' in data:
data = float(data) # 如果数据包含小数点,则转换为浮点数
else:
data = int(data) # 否则,转换为整数
except:
# 如果转换失败,打印错误信息并退出程序
print('No number')
exit(-1)
return data # 返回读取的数据
def Get(self, x1, x2):
# 获取两个秘密共享的值 (函数未实现)
pass
def RGet(self, x1):
# 获取一个秘密共享的值 (函数未实现)
pass
def ReShare(self, x):