Shamir Secret ShareShamir's secret sharing method generates a number of shares, of which a threshold defines the number of shares which can be used to re-build the message. |
Outline
The following is some sample code:
import tss from tss import share_secret, Hash import base64 import sys secret="hello" t=3 s=8 if (len(sys.argv)>1): secret=str(sys.argv[1]) if (len(sys.argv)>2): t=int(sys.argv[2]) if (len(sys.argv)>3): s=int(sys.argv[3]) shares = tss.share_secret(t, s, secret, 'my-id', Hash.NONE) print ("Using t shares") reconstructed_secret = tss.reconstruct_secret(shares[0:t]) print ("Secret:\t",secret) print ("===Shares===") for x in range (0,s): print (base64.b64encode(shares[x])) print ("Reconstructed:\t",reconstructed_secret.decode())
and a sample run is:
Using 8 shares and a threshold of 3 Secret: The secret of Coca-cola is ... ===Shares=== bXktaWQAAAAAAAAAAAAAAAADAB8B3JVNyQAHSL6hruW+tKYJwWnpPGbk3zD12g7/j+Bo bXktaWQAAAAAAAAAAAAAAAADAB8CHfqb0eRG+fqZ2BGc/W0SOrqbb1XAf7OCP4EIBMll bXktaWQAAAAAAAAAAAAAAAADAB8DlQezOJck0jZdAtRNL+tYlLATflBLzOJXjPzXpQcj bXktaWQAAAAAAAAAAAAAAAADAB8E1YAMOZmSUVUhO/Sh28nYjdNnMv+U6QUzaaxyrWCJ bXktaWQAAAAAAAAAAAAAAAADAB8FXX0k0Orwepnl4TFwCU+SI9nvI/ofWlTm2tGtDK7P bXktaWQAAAAAAAAAAAAAAAADAB8GnBLyyA6xy93dl8VSQISJ2AqdcMk7+teRP15ah4fC bXktaWQAAAAAAAAAAAAAAAADAB8HFO/aIX3T4BEZTQCDkgLDdgAVYcywSYZEjCOFJkmE bXktaWQAAAAAAAAAAAAAAAADAB8IAdK5v+1ic4xH2n0kcT6Ki3zkSa1Mx+gt71aMQui/ Reconstructed: The secret of Coca-cola is ...