用python实现Shamir-secret-share

Shamir密钥分享
本文介绍了一种基于galois库实现的Shamir密钥分享方案,该方案可在扩展有限域GF(2^m)上进行[t,n]门限的密钥分享流程。通过构造多项式并随机分配份额来完成密钥的分享,再利用拉格朗日插值法重构原始密钥。

采用 galois 的python库(https://github.com/mhostetter/galois ),快速写了一个在扩GF(2^m)上的 [t,n] 门限的Shamir-secret-sharing 流程;

document写的也很详细使用起来非常趁手。缺点就是效率略低一些。

https://pypi.org/project/galois/#polynomial-construction 

代码如下:

import numpy as np
import galois 

# Apply GF calculation implement Shamir Secret Share
# system parameter
# field param

n = 10
t = 6
F_num = 2**8
GF256 = galois.GF(F_num)


def distribute_shares(s):
    # Construct the polynomial and distribute the shares 
    # 
    print('The secret is :',s)
    powers =[i for i in range(t-1,-1,-1)]
    coeffs = [np.random.randint(F_num) for _ in range(t-1)]
    # append the secret as intercept;
    coeffs.append(s)
    p = galois.Poly.Degrees(powers, coeffs, field=GF256)
    print('construct the polynomials:',p)

    # randomly generate n points 
    secr
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenxin0215

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值