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

org.bouncycastle.crypto.generators

## Class OpenSSLPBEParametersGenerator

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

-     public class OpenSSLPBEParametersGenerator
      extends PBEParametersGenerator

  Generator for PBE derived keys and ivs as usd by OpenSSL.

  Originally this scheme was a simple extension of PKCS 5 V2.0 Scheme 1 using MD5 with an iteration count of 1. The default digest was changed to SHA-256 with OpenSSL 1.1.0. This implementation still defaults to MD5, but the digest can now be set.

- - ### Field Summary

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

      `iterationCount, password, salt`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OpenSSLPBEParametersGenerator()` Construct a OpenSSL Parameters generator - digest the original MD5.
    `OpenSSLPBEParametersGenerator(Digest digest)` Construct a OpenSSL Parameters generator - digest as specified.

  - ### 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.
    `void` | `init(byte[] password, byte[] salt)` Initialise - note the iteration count for this algorithm is fixed at 1.

    - ### 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

    - #### OpenSSLPBEParametersGenerator

          public OpenSSLPBEParametersGenerator()

      Construct a OpenSSL Parameters generator - digest the original MD5.

    - #### OpenSSLPBEParametersGenerator

          public OpenSSLPBEParametersGenerator(Digest digest)

      Construct a OpenSSL Parameters generator - digest as specified.
      Parameters:
        `digest` - the digest to use as the PRF.

  - ### Method Detail

    - #### init

          public void init(byte[] password,
                           byte[] salt)

      Initialise - note the iteration count for this algorithm is fixed at 1.
      Parameters:
        `password` - password to use.
        `salt` - salt to use.

    - #### 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.