网上有些博主可能发布过相关的文章,我之前也动手算过一次,怎么算都算不对。后来发现mod p
这个运算的除法运算比较独特。
首先介绍一个小费马定理
:
引申为:
那么有:
接下来步入正题:shamir(t, n)门限秘密共享方案
秘密分发阶段:
首先构造多项式:
其中S为我们的秘密。p是一个大素数,且S<p。取w个不相等的x,带入F(x)中,得到w组(xi,yi),分配给w个人,公开p,销毁多项式,每个人负责保密自己的(xi,yi)。
秘密重构阶段:
使用拉格朗日插值公式:
F(0) = S。
接下来拿一个实例来说明一下:
假设我们有w=4个人,设定至少t=3人才能恢复秘密。
秘密S=2,p=23
构造
取x1=1,x2=2,x3=3,x4=4
带入得y1=7,y2=16, y3=6,y4=0
利用3组进行恢复(1,7) (3,6) (4,0)
其中的除法,使用上述的小费马定理。
很多读者可能发现这个不使用小费马定理也可以解出来正确的结果。大家可以使用其他比较简单的多项式构造尝试一下,会发现,先算出来所有结果,最后取模,得不到原来的秘密。如果使用小费马定理的话,可以计算出来原来的结果。