If byte array parameter secretMessage has zeros at start then reconstructed secret doesn't have those leading zeros. Example code byte[] secret = new byte[] { 0x00, 0x00, 0x00, 0x05 }; SplitSecret splitSecret = SecretSplitter.SplitMessage(secret, 3); IEnumerable<SecretShare> secretShares = splitSecret.GetShares(5); List<string> shares = secretShares.Select(i => i.ToString()).ToList(); CombinedSecret combinedSecret = SecretCombiner.Combine(shares.Take(3)); byte[] result= combinedSecret.RecoveredBytes; //result length is 1