ShamirSecretSplitter (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.crypto.threshold

## Class ShamirSecretSplitter

- java.lang.Object
- - org.bouncycastle.crypto.threshold.ShamirSecretSplitter

- All Implemented Interfaces:
    SecretSplitter

      public class ShamirSecretSplitter
      extends java.lang.Object
      implements SecretSplitter

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ShamirSecretSplitter.Algorithm`
    `static class` | `ShamirSecretSplitter.Mode`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `l` Length of the secret
    `protected java.security.SecureRandom` | `random`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ShamirSecretSplitter(ShamirSecretSplitter.Algorithm algorithm, ShamirSecretSplitter.Mode mode, int l, java.security.SecureRandom random)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ShamirSplitSecret` | `resplit(byte[] secret, int m, int n)` Creates secret shares from a given secret.
    `ShamirSplitSecret` | `split(int m, int n)` Creates secret shares.
    `ShamirSplitSecret` | `splitAround(SecretShare s, int m, int n)` Creates secret shares from a given secret share.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### l

          protected int l

      Length of the secret

    - #### random

          protected java.security.SecureRandom random

  - ### Constructor Detail

    - #### ShamirSecretSplitter

          public ShamirSecretSplitter(ShamirSecretSplitter.Algorithm algorithm,
                                      ShamirSecretSplitter.Mode mode,
                                      int l,
                                      java.security.SecureRandom random)

  - ### Method Detail

    - #### split

          public ShamirSplitSecret split(int m,
                                         int n)

      Description copied from interface: `SecretSplitter`
      Creates secret shares. The secret will be divided into shares, where the secret has a length of L bytes.
      Specified by:
        `split` in interface `SecretSplitter`
      Parameters:
        `m` - A threshold number of shares
        `n` - Total number of shares
      Returns:
        An array of `byte[][]` representing the generated secret shares for m users with l bytes each.

    - #### splitAround

          public ShamirSplitSecret splitAround(SecretShare s,
                                               int m,
                                               int n)
                                        throws java.io.IOException

      Description copied from interface: `SecretSplitter`
      Creates secret shares from a given secret share. The secret will be divided into shares, where the secret has a length of L bytes.
      Specified by:
        `splitAround` in interface `SecretSplitter`
        `m` - A threshold number of shares
        `n` - Total number of shares
      Returns:
        An array of `byte[][]` representing the generated secret shares for m users with l bytes each.
      Throws:
        `java.io.IOException`

    - #### resplit

          public ShamirSplitSecret resplit(byte[] secret,
                                           int m,
                                           int n)

      Description copied from interface: `SecretSplitter`
      Creates secret shares from a given secret. The secret will be divided into shares, where the secret has a length of L bytes.
      Specified by:
        `resplit` in interface `SecretSplitter`
        `m` - A threshold number of shares
        `n` - Total number of shares
      Returns:
        An array of `byte[][]` representing the generated secret shares for m users with l bytes each.