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:
  • 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.