基于 t 维空间中点的确定的(t, n)门限秘密共享
基于 t 维空间中点的确定的(t, n)门限秘密共享
其原理基于三维空间中,两个互不平行的面相交于一条直线,三个互不平行的面相交于一个唯一确定的点。
那么,(t, n)门限秘密共享就可以看作将秘密信息映射为三维空间中某一点(此处的 t 设为3),随机选取n个互不平行的平面。当已知n个平面中的任意两个平面时无法确定出该点,满足当选取任意 t-1 个秘密信息碎片时,无法恢复秘密信息。
对于 (t, n) 门限秘密共享,只需将其扩展到 t 维即可。即在 t 维空间中任意选取一个点作为秘密信息,并过该点任意选取 n 个互不平行的超平面,将这些超平面方程的系数和常数项作为秘密信息碎片。恢复时,只需将 t 个超平面方程联立求解线性方程组即可。
缺点是,当 t 值较大时,幂运算的次数也较高,所以运算缓慢,效率不高。
# 密钥分割函数 将秘密信息k分割为n个信息
def secretSplit(secret, t, n):# 在t维空间中确定一个点,将秘密信息编码到这个点的坐标当中# 简单采用重复构造point = []for i in range(t):point.append(secret)# 构造过该点的n个面,且两两不平行# 面的方程为: A(a - a0) + B(b - b0) + ... + T(t - t0) = 0# 系数矩阵factor = np.zeros([n, t])# 常数Num = np.zeros([1, n])for i in range(n):tag = 1while tag == 1:tag = 0# 随机生成t个系数random.seed(time.time())list = range(1, 2 * t)num = random.sample(list, t)# 常数项N = 0# 系数F = np.zeros([1, t])for j in range(t):N = N + num[j] * point[j]F[0, j] = num[j]# 判断是否两两平行for k in range(i):temp = F[0, 0] / factor[k][0]flag = 0for l in range(1, t):if F[0, l]/factor[k][l] == temp:flag = flag + 1# 平行if flag == t - 1:tag = 1breakNum[0, i] = Nfor j in range(t):factor[i][j] = F[0, j]print("%d个方程系数矩阵为:"%(n))print(factor)print("%d个方程常数矩阵为:"%(n))print(Num)return factor, Num
# 解线性方程组使用的库
from scipy import linalg
# 秘密信息恢复
def secretRecover(factor, Num):# 少于t个面if factor.shape[0] < factor.shape[1]:print("平面个数少于%d,无法恢复"%(factor.shape[1]))elif factor.shape[0] == factor.shape[1]:Num = Num.reshape(factor.shape[1], 1)point = linalg.solve(factor, Num)point = point.reshape(1, factor.shape[1])print("恢复秘密信息为:")print(point)else:F = np.zeros([factor.shape[1], factor.shape[1]])N = np.zeros([1, factor.shape[1]])random.seed(time.time())list = range(0, factor.shape[0])num = random.sample(list, factor.shape[1])for i in range(factor.shape[1]):F[i] = factor[num[i]]N[0, i] = Num[0, num[i]]N = N.reshape(factor.shape[1], 1)point = linalg.solve(F, N)point = point.reshape(1, factor.shape[1])print("恢复秘密信息为:")print(point)
运行结果:
基于 t 维空间中点的确定的(t, n)门限秘密共享相关推荐
- 基于中国剩余定理的(t, n)门限秘密共享方案
基于中国剩余定理的(t, n)门限秘密共享方案 目录 实验目的 实验环境 实现目标 方案设计 背景 实验原理 算法步骤 方案实现 流程图 主要函数介绍 主要代码 数据分析 数据1 数据1运行结果 数据 ...
- 3维空间中点、线、面之间的数学关系(python代码)
1 面的定义 三维空间中的平面由两个量确定: ① 一个法向量(垂直于该平面的向量) ② 一个已知点(位于该平面上的一个点 2 叉乘和点乘的区别 2.1叉乘的计算方式,叉乘用来得到垂直于两条向量的向量. ...
- 智能,万亿维空间中的求解
作者:Terry J. Sejnowski 编译:贾伟.梦佳 1884年,Edwin Abbott 在讽刺小说<平面国>中描述了这样一个世界,这个国家生活在一个二维世界中,平面国的人们只能 ...
- 基于Solr的空间搜索学习笔记
基于Solr的空间搜索学习笔记 在Solr中基于空间地址查询主要围绕2个概念实现: (1) Cartesian Tiers 笛卡尔层 Cartesian Tiers是通过将一个平面地图的根据设定的层次 ...
- Python地信专题 |基于geopandas的空间数据分析-深入浅出分层设色
点击蓝字关注我,有干货领取! 本文对应代码和数据已上传至我的Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 已发布: P ...
- Python地信专题 | 基于geopandas的空间数据分析—数据结构篇
作者:费弗里 博客地址: https://www.cnblogs.com/feffery/p/11898190.html 说明:本文经作者授权转载,禁止二次转载 全文8500字 本文对应代码已上传至我 ...
- Python地信专题 | 基于geopandas的空间数据分析-坐标参考系篇
文章来源于Python大数据分析,作者费弗里 本文对应代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在 ...
- 图像分割——基于二维灰度直方图的阈值处理
前言 像素灰度值仅仅反映了像素灰度级的幅值大小,并没有反映出像素与邻域的空间相关信息. 二维灰度直方图的概念 二维灰度直方图:像素的灰度值分布和邻域的平均灰度值分布构成的二维直方图 二维直方图的值N( ...
- DBSCAN: 基于密度对空间含噪声数据中不规则形状进行聚类
聚类算法是机器学习中使用频率较高的无监督学习方法,不需要样本标签,就可以将其进行分类,常常作为其他学习任务的前期粗加工.但是原始聚类算法在面对含有噪声或形状非凸的数据分布时表现较差,于是有研究人员提出 ...
最新文章
- android wifi模拟,模拟WifiManager进行Android单元测试
- java解析c上传十六进制_磕代码c/c++/java:十六进制转十进制
- C语言经典例8-输出乘法口诀表
- 计算机应用基础试题号2007,2006-2007计算机应用基础期末试题(A卷).pdf
- 远程开启admin$共享(远程管理需开启如dameware软件)
- MySQL数据库基础(三)——SQL语言
- 驱动模块的安装与卸载指令
- 中科院30m二级分类土地利用数据Arcgis预处理及获取
- 维修电工技师技能实训考核装置QY-W05
- Tecplot读取Excel文件中的数据
- 6.9 齐次线性方程组
- 台式电脑接路由器步骤_台式电脑连接网络步骤
- pureftpd 配置 mysql_Pure-ftp配置文件详解
- 抓包神器:Charles
- 和我一起学Python
- echarts图表y轴数据设置为固定值,等间距,如何自定义echarts图表y轴数据
- Altium PCB 基本规则的详解
- Windows 7 x64 SP1 安装 Windows Edge 浏览器
- 简要概述服装设计管理
- 想找一家好公司入职或者合作?那么这块天眼查GUI版本非常适合你。
热门文章
- java 画正方体直观图_用斜二测画法画水平放置的边长为的正方形的直观图,则所得直观图的面积为...
- vba的if条件函数和range用法超详细介绍
- video 视频下载,调用浏览器的下载进度方法
- win7设置快捷关机键
- 定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,读取文件dog1的状态给dog2。
- 打印dataframe的时候省略号的处理
- 你享家居教你如何摆放家具让你生活更有格调
- Java serialVersionUID 有什么作用
- 浅析女性导购分享APP开发的发展趋势
- 华为手机什么时候更新鸿蒙系统_升级快讯:又一批华为手机可以升级到“鸿蒙系统”了!...