github.com/lafriks/go-shamir (go): Package shamir implements Shamir's Secret Sharing algorithm over GF(2^8).  Shamir's Secret Sharing algorithm allows you to securely share a secret with N people, allowing the recovery of that secret if K of those people combine their shares.  It begins by encoding a secret as a number (e.g., 42), and generating N random polynomial equations of degree K-1 which have an X-intercept equal to the secret. Given K=3, the following equations might be generated:  These polynomials are then evaluated for values of X > 0:  These (x, y) pairs are the shares given to the parties. In order to combine shares to recover the secret, these (x, y) pairs are used as the input points for Lagrange interpolation, which produces a polynomial which matches the given points. This polynomial can be evaluated for f(0), producing the secret value--the common x-intercept for all the generated polynomials.  If fewer than K shares are combined, the interpolated polynomial will be wrong, and the result of f(0) will not be the secret.  This package constructs polynomials over the field GF(2^8) for each byte of the secret, allowing for fast splitting and combining of anything which can be encoded as bytes.  This package has not been audited by cryptography or security professionals.
Keywords: go|go-library|golang|golang-library|shamir|shamir-secret-sharing