Files
xgcl/sharing/ssss/doc.go
T
2026-05-27 23:03:00 +08:00

43 lines
931 B
Go

package ssss
/*
package ssss implements Shamir's Secret Sharing Scheme
Usage:
func TestSSSS() {
secret := make([]byte, 16)
// (3,5)门限
shares, err := Split(secret, 3, 5, 0, rand.Reader)
if err != nil {
//
}
// shares 是5份分片数据
// 收集至少3份分片数据
recoveryShares := shares[:3]
//
recoveredSecret, err := Restore(recoveryShares)
if err != nil {
//
}
if bytes.Compare(secret, recoveredSecret) != 0 {
fmt.Println("recoveredSecret and secret are different")
}
}
每个分片数据格式定义为:
SharedSlice ::= SEQUENCE {
Version INTEGER DEFAULT 0,-- default 0
Threshold INTEGER, -- 门限值
Length INTEGER, -- 原秘密值字节数
Degree INTEGER, -- 拉格朗日多项式系数域在F_2上的扩域次数
X INTEGER, -- x值
Y INTEGER, -- y=f(x)
Token [0]IMPLICIT OCTET STRING OPTINAL --随机字节,同一secret的n个分片应该一致
}
*/