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

org.bouncycastle.crypto.prng

## Class DigestRandomGenerator

- java.lang.Object
- - org.bouncycastle.crypto.prng.DigestRandomGenerator

- All Implemented Interfaces:
    RandomGenerator

      public class DigestRandomGenerator
      extends java.lang.Object
      implements RandomGenerator

  Random generation based on the digest with counter. Calling addSeedMaterial will always increase the entropy of the hash.

  Internal access to the digest is synchronized so a single one of these can be shared.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DigestRandomGenerator(Digest digest)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSeedMaterial(byte[] inSeed)` Add more seed material to the generator.
    `void` | `addSeedMaterial(long rSeed)` Add more seed material to the generator.
    `void` | `nextBytes(byte[] bytes)` Fill bytes with random values.
    `void` | `nextBytes(byte[] bytes, int start, int len)` Fill part of bytes with random values.

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

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

- - ### Constructor Detail

    - #### DigestRandomGenerator

          public DigestRandomGenerator(Digest digest)

  - ### Method Detail

    - #### addSeedMaterial

          public void addSeedMaterial(byte[] inSeed)

      Description copied from interface: `RandomGenerator`
      Add more seed material to the generator.
      Specified by:
        `addSeedMaterial` in interface `RandomGenerator`
      Parameters:
        `inSeed` - a byte array to be mixed into the generator's state.

    - #### addSeedMaterial

          public void addSeedMaterial(long rSeed)

      Description copied from interface: `RandomGenerator`
      Add more seed material to the generator.
      Specified by:
        `addSeedMaterial` in interface `RandomGenerator`
      Parameters:
        `rSeed` - a long value to be mixed into the generator's state.

    - #### nextBytes

          public void nextBytes(byte[] bytes)

      Description copied from interface: `RandomGenerator`
      Fill bytes with random values.
      Specified by:
        `nextBytes` in interface `RandomGenerator`
      Parameters:
        `bytes` - byte array to be filled.

    - #### nextBytes

          public void nextBytes(byte[] bytes,
                                int start,
                                int len)

      Description copied from interface: `RandomGenerator`
      Fill part of bytes with random values.
      Specified by:
        `nextBytes` in interface `RandomGenerator`
      Parameters:
        `bytes` - byte array to be filled.
        `start` - index to start filling at.
        `len` - length of segment to fill.