Object Base58Btc

  • All Implemented Interfaces:

    
    public class Base58Btc
    
                        

    Base58 is a way to encode Bitcoin addresses (or arbitrary data) as alphanumeric strings. Note that this is not the same base58 as used by Flickr, which you may find referenced around the Internet.

    Satoshi explains: why base-58 instead of standard base-64 encoding?

    • Don't want 0OIl characters that look the same in some fonts and could be used to create visually identical looking account numbers.

    • A string with non-alphanumeric characters is not as easily accepted as an account number.

    • E-mail usually won't line-break if there's no punctuation to break at.

    • Double-clicking selects the whole number as one word if it's all alphanumeric.

    However, note that the encoding/decoding runs in O(n) time, so it is not useful for large data.

    The basic idea of the encoding is to treat the data bytes as a large number represented using base-256 digits, convert the number to be represented using base-58 digits, preserve the exact number of leading zeros (which are otherwise lost during the mathematical operations on the numbers), and finally represent the resulting base-58 digits as alphanumeric ASCII characters.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
      public final static Base58Btc INSTANCE
    • Constructor Summary

      Constructors 
      Constructor Description
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final String encode(ByteArray input) Encodes the given bytes as a base58 string (no checksum is appended).
      final ByteArray decode(String input) Decodes the given base58 string into the original data bytes.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

    • Method Detail

      • encode

         final String encode(ByteArray input)

        Encodes the given bytes as a base58 string (no checksum is appended).

        Parameters:
        input - the bytes to encode
        Returns:

        the base58-encoded string

      • decode

         final ByteArray decode(String input)

        Decodes the given base58 string into the original data bytes.

        Parameters:
        input - the base58-encoded string to decode
        Returns:

        the decoded data bytes