# HG changeset patch # User Laman # Date 2019-05-29 11:37:14 # Node ID ccb4a27318f11862f19168d857c9f2163ebf5a94 # Parent b52e197db5a8ae1e1368fd1b4509e9c26ed73952 added readme diff --git a/readme.md b/readme.md new file mode 100644 --- /dev/null +++ b/readme.md @@ -0,0 +1,7 @@ +# Shamira # + +Implements Shamir's secret sharing algorithm. Splits a string or a byte sequence byte-per-byte into n<255 shares, with any k of them sufficient for reconstruction of the original input. + +Outputs the shares as hexadecimal, Base32 or Base64 encoded strings. + +Can be used on its own from the command line by invoking shamira.py or as a library by importing shamira.py. diff --git a/src/shamira.py b/src/shamira.py --- a/src/shamira.py +++ b/src/shamira.py @@ -18,6 +18,7 @@ class MalformedShare(SException): pass def _shareByte(secretB,k,n): if not k<=n<255: raise InvalidParams("Failed k<=n<255, k={0}, n={1}".format(k,n)) + # we might be concerned with zero coefficients degenerating our polynomial, but there's no reason - we still need k shares to determine it is the case coefs=[int(secretB)]+[int(b) for b in os.urandom(k-1)] points=[gf256.evaluate(coefs,i) for i in range(1,n+1)] return points