秘密分享(Secret Sharing)

秘密共享(Secret Sharing,SS)是1979年由Shamir和Blakey提出的,并在此之后40多年秘密共享被广泛认识和深入的研究。

秘密共享著名的(t,n)阈值方案如图所示:设秘密s被分成n个部分,每一部分被称为一个子秘密并由一个持有者持有,并且大于等于t个参与者所持有的子秘密可以重构(Reconstruction)秘密s,而少于t个参与者所持有的子秘密无法重构秘密并且无法获得秘密s的任何信息。

秘密共享方案的三种实现技术:

  1. 基于超平面几何的秘密共享,包括Blakley方案和Brickell方案;
  2. 基于插值多项式的秘密共享,包括经典的Shamir阈值秘密共享方案;
  3. Mignotte,Asmuth & Bloom提出的基于中国剩余定理的秘密共享;

共享原理

形式化定义如下:

其中s表示需要拆分的秘密,t表示恢复门限,n为拆分数目。
存在恢复函数 R,对于任意 m ≥ t 有

shamir算法

shamir是一种秘密共享的实现1,利用了拉格朗日插值公式2。详细原理见参考文献。
下面补充一个shamir算法的有用的性质:加同态。
已知已有两个用于秘密共享的多项式
 以及素数p。通过秘密共享分享的分片形式是
将分片中的多项式结果求和,得到 

根据shamir算法中的定义,a0,b0 是原秘密。因此通过恢复算法对求和后的分片进行恢复,将会得到 a0 + b0 。这就实现了秘密求和。在双方求和的情况下,没有意义,但在参与者数目大于等于3时,就会有用。

### 配置 Qt 5.14.2 和 Visual Studio 2022 #### 安装 Qt VS Tools 插件 为了能够在 Visual Studio 2022 中使用 Qt 5.14.2,首先需要安装 `Qt VS Tools` 插件。通过访问扩展管理器来完成此操作: - 进入 **扩展** 菜单,选择 **管理扩展** - 在搜索框内输入 “qt”,查找名为 `Qt Visual Studio Tools` 的插件并进行安装[^4] #### 添加 Qt 版本到 Visual Studio 一旦工具成功安装完毕之后,则需向 IDE 注册特定版本的 Qt 库。 - 启动 Visual Studio 2022 并转至 **工具 (Tools)** -> **Options...** - 寻找左侧列表中的 **Qt VS Tools**, 接着点击它展开子项直至看到 **Qt Versions** - 点击右侧窗口顶部附近的按钮以增加新的条目;此时应指定本地计算机上已有的 Qt 安装位置——对于 Qt 5.14.2 来说可能是类似于这样的路径:`E:\Qt\Qt5.14.2\5.14.2\msvc2017_64` #### 创建新项目时集成 Qt 支持 当一切准备就绪后,便可以在新建工程的过程中利用这些预先设定好的配置了: - 当创建一个新的 C++ 项目时,可以选择带有 Qt 支持的应用模板比如 Widgets Application - 如果选择了合适的 Kit(即编译器与库匹配),那么整个过程应该相对顺利地自动关联所需的依赖关系[^3] #### 解决可能遇到的问题 如果在上述过程中遇到了缺少 MSVC 编译器组件的情况,请确认 Visual Studio Installer 是否包含了必要的工作负载如 Desktop development with C++. 此外,确保安装 Qt 时也选择了对应的 msvc 版本(例如 msvc2017 或 msvc2019),这有助于避免兼容性问题[^2]. ```cpp // 示例代码片段展示如何初始化一个简单的 Qt 小部件应用程序 #include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(250, 150); window.setWindowTitle("Simple example"); window.show(); return app.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值