Class Base58

java.lang.Object
org.apache.commons.codec.binary.BaseNCodec
org.apache.commons.codec.binary.Base58
All Implemented Interfaces:
BinaryDecoder, BinaryEncoder, Decoder, Encoder

public class Base58 extends BaseNCodec
Provides Base58 encoding and decoding as commonly used in cryptocurrency and blockchain applications.

Base58 is a binary-to-text encoding scheme that uses a 58-character alphabet to encode data. It avoids characters that can be confused (0/O, I/l, +/) and is commonly used in Bitcoin and other blockchain systems.

This implementation accumulates data internally until EOF is signaled, at which point the entire input is converted using BigInteger arithmetic. This is necessary because Base58 encoding/decoding requires access to the complete data to properly handle leading zeros.

This class is thread-safe for read operations but the Context object used during encoding/decoding should not be shared between threads.

The Base58 alphabet is:

 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
 

This excludes: 0, I, O, and l.

Since:
1.22.0
See Also:
  • Constructor Details

    • Base58

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

      public Base58(Base58.Builder builder)
      Constructs a Base58 codec used for encoding and decoding with custom configuration.
      Parameters:
      builder - the builder with custom configuration.
  • Method Details

    • builder

      public static Base58.Builder builder()
      Creates a new Builder.

      To configure a new instance, use a Base58.Builder. For example:

       Base58 base58 = Base58.builder()
         .setEncode(true)
         .get()
       
      Returns:
      a new Builder.
    • isInAlphabet

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