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

org.bouncycastle.crypto

## Class PBEParametersGenerator

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

- Direct Known Subclasses:
    OpenSSLPBEParametersGenerator, PKCS12ParametersGenerator, PKCS5S1ParametersGenerator, PKCS5S2ParametersGenerator

      public abstract class PBEParametersGenerator
      extends java.lang.Object

  super class for all Password Based Encryption (PBE) parameter generator classes.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `iterationCount`
    `protected byte[]` | `password`
    `protected byte[]` | `salt`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `PBEParametersGenerator()` base constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract CipherParameters` | `generateDerivedMacParameters(int keySize)` generate derived parameters for a key of length keySize, specifically for use with a MAC.
    `abstract CipherParameters` | `generateDerivedParameters(int keySize)` generate derived parameters for a key of length keySize.
    `abstract CipherParameters` | `generateDerivedParameters(int keySize, int ivSize)` generate derived parameters for a key of length keySize, and an initialisation vector (IV) of length ivSize.
    `int` | `getIterationCount()` return the iteration count.
    `byte[]` | `getPassword()` return the password byte array.
    `byte[]` | `getSalt()` return the salt byte array.
    `void` | `init(byte[] password, byte[] salt, int iterationCount)` initialise the PBE generator.
    `static byte[]` | `PKCS12PasswordToBytes(char[] password)` converts a password to a byte array according to the scheme in PKCS12 (unicode, big endian, 2 zero pad bytes at the end).
    `static byte[]` | `PKCS5PasswordToBytes(char[] password)` converts a password to a byte array according to the scheme in PKCS5 (ascii, no padding)
    `static byte[]` | `PKCS5PasswordToUTF8Bytes(char[] password)` converts a password to a byte array according to the scheme in PKCS5 (UTF-8, no padding)

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

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

- - ### Field Detail

    - #### password

          protected byte[] password

    - #### salt

          protected byte[] salt

    - #### iterationCount

          protected int iterationCount

  - ### Constructor Detail

    - #### PBEParametersGenerator

          protected PBEParametersGenerator()

      base constructor.

  - ### Method Detail

    - #### init

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

      initialise the PBE generator.
      Parameters:
        `password` - the password converted into bytes (see below).
        `salt` - the salt to be mixed with the password.
        `iterationCount` - the number of iterations the "mixing" function is to be applied for.

    - #### getPassword

          public byte[] getPassword()

      return the password byte array.
      Returns:
        the password byte array.

    - #### getSalt

          public byte[] getSalt()

      return the salt byte array.
      Returns:
        the salt byte array.

    - #### getIterationCount

          public int getIterationCount()

      return the iteration count.
      Returns:
        the iteration count.

    - #### generateDerivedParameters

          public abstract CipherParameters generateDerivedParameters(int keySize)

      generate derived parameters for a key of length keySize.
      Parameters:
        `keySize` - the length, in bits, of the key required.
      Returns:
        a parameters object representing a key.

    - #### generateDerivedParameters

          public abstract CipherParameters generateDerivedParameters(int keySize,
                                                                     int ivSize)

      generate derived parameters for a key of length keySize, and an initialisation vector (IV) of length ivSize.
      Parameters:
        `keySize` - the length, in bits, of the key required.
        `ivSize` - the length, in bits, of the iv required.
      Returns:
        a parameters object representing a key and an IV.

    - #### generateDerivedMacParameters

          public abstract CipherParameters generateDerivedMacParameters(int keySize)

      generate derived parameters for a key of length keySize, specifically for use with a MAC.
      Parameters:
        `keySize` - the length, in bits, of the key required.
      Returns:
        a parameters object representing a key.

    - #### PKCS5PasswordToBytes

          public static byte[] PKCS5PasswordToBytes(char[] password)

      converts a password to a byte array according to the scheme in PKCS5 (ascii, no padding)
      Parameters:
        `password` - a character array representing the password.
      Returns:
        a byte array representing the password.

    - #### PKCS5PasswordToUTF8Bytes

          public static byte[] PKCS5PasswordToUTF8Bytes(char[] password)

      converts a password to a byte array according to the scheme in PKCS5 (UTF-8, no padding)
      Parameters:
        `password` - a character array representing the password.
      Returns:
        a byte array representing the password.

    - #### PKCS12PasswordToBytes

          public static byte[] PKCS12PasswordToBytes(char[] password)

      converts a password to a byte array according to the scheme in PKCS12 (unicode, big endian, 2 zero pad bytes at the end).
      Parameters:
        `password` - a character array representing the password.
      Returns:
        a byte array representing the password.