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

org.bouncycastle.crypto.generators

## Class PKCS5S1ParametersGenerator

- java.lang.Object
- - org.bouncycastle.crypto.PBEParametersGenerator
  - - org.bouncycastle.crypto.generators.PKCS5S1ParametersGenerator

-     public class PKCS5S1ParametersGenerator
      extends PBEParametersGenerator

  Generator for PBE derived keys and ivs as defined by PKCS 5 V2.0 Scheme 1. Note this generator is limited to the size of the hash produced by the digest used to drive it.

  The document this implementation is based on can be found at RSA's PKCS5 Page

- - ### Field Summary

    - ### Fields inherited from class org.bouncycastle.crypto.PBEParametersGenerator

      `iterationCount, password, salt`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PKCS5S1ParametersGenerator(Digest digest)` Construct a PKCS 5 Scheme 1 Parameters generator.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `CipherParameters` | `generateDerivedMacParameters(int keySize)` Generate a key parameter for use with a MAC derived from the password, salt, and iteration count we are currently initialised with.
    `CipherParameters` | `generateDerivedParameters(int keySize)` Generate a key parameter derived from the password, salt, and iteration count we are currently initialised with.
    `CipherParameters` | `generateDerivedParameters(int keySize, int ivSize)` Generate a key with initialisation vector parameter derived from the password, salt, and iteration count we are currently initialised with.

    - ### Methods inherited from class org.bouncycastle.crypto.PBEParametersGenerator

      `getIterationCount, getPassword, getSalt, init, PKCS12PasswordToBytes, PKCS5PasswordToBytes, PKCS5PasswordToUTF8Bytes`

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

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

- - ### Constructor Detail

    - #### PKCS5S1ParametersGenerator

          public PKCS5S1ParametersGenerator(Digest digest)

      Construct a PKCS 5 Scheme 1 Parameters generator.
      Parameters:
        `digest` - the digest to be used as the source of derived keys.

  - ### Method Detail

    - #### generateDerivedParameters

          public CipherParameters generateDerivedParameters(int keySize)

      Generate a key parameter derived from the password, salt, and iteration count we are currently initialised with.
      Specified by:
        `generateDerivedParameters` in class `PBEParametersGenerator`
      Parameters:
        `keySize` - the size of the key we want (in bits)
      Returns:
        a KeyParameter object.
      Throws:
        `java.lang.IllegalArgumentException` - if the key length larger than the base hash size.

    - #### generateDerivedParameters

          public CipherParameters generateDerivedParameters(int keySize,
                                                            int ivSize)

      Generate a key with initialisation vector parameter derived from the password, salt, and iteration count we are currently initialised with.
      Specified by:
        `generateDerivedParameters` in class `PBEParametersGenerator`
      Parameters:
        `keySize` - the size of the key we want (in bits)
        `ivSize` - the size of the iv we want (in bits)
      Returns:
        a ParametersWithIV object.
      Throws:
        `java.lang.IllegalArgumentException` - if keySize + ivSize is larger than the base hash size.

    - #### generateDerivedMacParameters

          public CipherParameters generateDerivedMacParameters(int keySize)

      Generate a key parameter for use with a MAC derived from the password, salt, and iteration count we are currently initialised with.
      Specified by:
        `generateDerivedMacParameters` in class `PBEParametersGenerator`
      Parameters:
        `keySize` - the size of the key we want (in bits)
      Returns:
        a KeyParameter object.
      Throws:
        `java.lang.IllegalArgumentException` - if the key length larger than the base hash size.