The ->SSSS function splits a byte array into N shares so K of them can reconstruct the original byte array.

The splitting is done using a Shamir Secret Sharing Scheme as described in the seminal paper by Adi Shamir.

The principle is based on the fact that a polynomial P of degree K-1 can be fully determined by K points (X,Y), where Y = P(X). All computations are performed using arithmetic in the Galois Field GF(256) used for QR/Code Reed Solomon error correction, its generator is 2 and its primitive polynomial 0x11D (x^8 + x^4 + x^3 + x^2 + 1).

For each byte B to encode, a random polynomial P over GF(256) is chosen with the constraint that P(0) = B. Then N random values of GF(256) are selected and for each X such value, the two bytes X and P(X) are output to a share. If X was 0, a random value is emitted instead of P(X) and a new X value is selected. This is done to ensure the randomness of the output. It may therefore be possible that a split is longer than twice the size of the original input.

->SSSS is available since version 2.7.5.

See also



'Too many secrets, Marty' 'ASCII' ->BYTES 5 3 ->SSSS