Package org.apache.commons.codec.binary

# Class Base32

java.lang.Object
org.apache.commons.codec.binary.BaseNCodec
org.apache.commons.codec.binary.Base32

All Implemented Interfaces:
  `BinaryDecoder`, `BinaryEncoder`, `Decoder`, `Encoder`

public class Base32 extends BaseNCodec
Provides Base32 encoding and decoding as defined by RFC 4648.

The class can be parameterized in the following manner with various constructors:

- Whether to use the "base32hex" variant instead of the default "base32"
- Line length: Default 76. Line length that aren't multiples of 8 will still essentially end up being multiples of 8 in the encoded data.
- Line separator: Default is CRLF ("\r\n")

This class operates directly on byte streams, and not character streams.

This class is thread-safe.

You can configure instances with the `Base32.Builder`.

     Base32 base32 = Base32.builder()
       .setDecodingPolicy(DecodingPolicy.LENIENT) // default is lenient
       .setEncodeTable(customEncodeTable)
       .setLineLength(0)                          // default is none
       .setLineSeparator('\r', '\n')              // default is CR LF
       .setPadding('=')                           // default is =
       .get()

Since:
  1.5
See Also:
  - RFC 4648

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `Base32.Builder`
  Builds `Base32` instances.

  ## Nested classes/interfaces inherited from class org.apache.commons.codec.binary.BaseNCodec

  `BaseNCodec.AbstractBuilder<T,B extends BaseNCodec.AbstractBuilder<T,B>>`

- ## Field Summary

  ### Fields inherited from class org.apache.commons.codec.binary.BaseNCodec

  `DECODING_POLICY_DEFAULT, lineLength, MASK_8BITS, MIME_CHUNK_SIZE, pad, PAD, PAD_DEFAULT, PEM_CHUNK_SIZE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Base32()`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(boolean useHex)`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(boolean useHex, byte padding)`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(byte pad)`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(int lineLength)`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(int lineLength, byte[] lineSeparator)`
  Constructs a Base32 codec used for decoding and encoding.
  `Base32(int lineLength, byte[] lineSeparator, boolean useHex)`
  Constructs a Base32 / Base32 Hex codec used for decoding and encoding.
  `Base32(int lineLength, byte[] lineSeparator, boolean useHex, byte padding)`
  Constructs a Base32 / Base32 Hex codec used for decoding and encoding.
  `Base32(int lineLength, byte[] lineSeparator, boolean useHex, byte padding, CodecPolicy decodingPolicy)`
  Constructs a Base32 / Base32 Hex codec used for decoding and encoding.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Base32.Builder`
  `builder()`
  Creates a new Builder.
  `boolean`
  `isInAlphabet(byte octet)`
  Returns whether or not the `octet` is in the Base32 alphabet.

  ### Methods inherited from class org.apache.commons.codec.binary.BaseNCodec

  `containsAlphabetOrPad, decode, decode, decode, encode, encode, encode, encodeAsString, encodeToString, ensureBufferSize, getChunkSeparator, getCodecPolicy, getDefaultBufferSize, getEncodedLength, isInAlphabet, isInAlphabet, isStrictDecoding, isWhiteSpace`

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

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

- ## Constructor Details

  - ### Base32

    public Base32()
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length is 0 (no chunking).

  - ### Base32

    public Base32(boolean useHex)
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length is 0 (no chunking).

    Parameters:
      `useHex` - if `true` then use Base32 Hex alphabet

  - ### Base32

    public Base32(boolean useHex, byte padding)
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length is 0 (no chunking).

    Parameters:
      `useHex` - if `true` then use Base32 Hex alphabet
      `padding` - byte used as padding byte.

  - ### Base32

    public Base32(byte pad)
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length is 0 (no chunking).

    Parameters:
      `pad` - byte used as padding byte.

  - ### Base32

    public Base32(int lineLength)
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length is given in the constructor, the line separator is CRLF.

    Parameters:
      `lineLength` - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 8). If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.

  - ### Base32

    public Base32(int lineLength, byte[] lineSeparator)
    Constructs a Base32 codec used for decoding and encoding.

    When encoding the line length and line separator are given in the constructor.

    Line lengths that aren't multiples of 8 will still essentially end up being multiples of 8 in the encoded data.

    Parameters:
      `lineLength` - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 8). If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
      `lineSeparator` - Each line of encoded data will end with this sequence of bytes.
    Throws:
      `IllegalArgumentException` - Thrown when the `lineSeparator` contains Base32 characters.

  - ### Base32

    public Base32(int lineLength, byte[] lineSeparator, boolean useHex)
    Constructs a Base32 / Base32 Hex codec used for decoding and encoding.

    When encoding the line length and line separator are given in the constructor.

    Line lengths that aren't multiples of 8 will still essentially end up being multiples of 8 in the encoded data.

    Parameters:
      `lineLength` - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 8). If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
      `lineSeparator` - Each line of encoded data will end with this sequence of bytes.
      `useHex` - if `true`, then use Base32 Hex alphabet, otherwise use Base32 alphabet
    Throws:
      `IllegalArgumentException` - Thrown when the `lineSeparator` contains Base32 characters. Or the lineLength > 0 and lineSeparator is null.

  - ### Base32

    public Base32(int lineLength, byte[] lineSeparator, boolean useHex, byte padding)
    Constructs a Base32 / Base32 Hex codec used for decoding and encoding.

    When encoding the line length and line separator are given in the constructor.

    Line lengths that aren't multiples of 8 will still essentially end up being multiples of 8 in the encoded data.

    Parameters:
      `lineLength` - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 8). If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
      `lineSeparator` - Each line of encoded data will end with this sequence of bytes.
      `useHex` - if `true`, then use Base32 Hex alphabet, otherwise use Base32 alphabet
      `padding` - padding byte.
    Throws:
      `IllegalArgumentException` - Thrown when the `lineSeparator` contains Base32 characters. Or the lineLength > 0 and lineSeparator is null.

  - ### Base32

    public Base32(int lineLength, byte[] lineSeparator, boolean useHex, byte padding, CodecPolicy decodingPolicy)
    Constructs a Base32 / Base32 Hex codec used for decoding and encoding.

    When encoding the line length and line separator are given in the constructor.

    Line lengths that aren't multiples of 8 will still essentially end up being multiples of 8 in the encoded data.

    Parameters:
      `lineLength` - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 8). If lineLength <= 0, then the output will not be divided into lines (chunks). Ignored when decoding.
      `lineSeparator` - Each line of encoded data will end with this sequence of bytes.
      `useHex` - if `true`, then use Base32 Hex alphabet, otherwise use Base32 alphabet
      `padding` - padding byte.
      `decodingPolicy` - The decoding policy.
    Throws:
      `IllegalArgumentException` - Thrown when the `lineSeparator` contains Base32 characters. Or the lineLength > 0 and lineSeparator is null.
    Since:
      1.15

- ## Method Details

  - ### builder

    public static Base32.Builder builder()
    Creates a new Builder.
    Returns:
      a new Builder.
    Since:
      1.17.0

  - ### isInAlphabet

    public boolean isInAlphabet(byte octet)
    Returns whether or not the `octet` is in the Base32 alphabet.
    Specified by:
      `isInAlphabet` in class `BaseNCodec`
    Parameters:
      `octet` - The value to test
    Returns:
      `true` if the value is defined in the Base32 alphabet `false` otherwise.