Class Base64


  • @Deprecated
    public class Base64
    extends java.lang.Object
    Deprecated.
    Use Base64.
    Provides Base64 encoding and decoding as defined by RFC 2045.

    This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.

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

    • URL-safe mode: Default off.
    • Line length: Default 76. Line length that aren't multiples of 4 will still essentially end up being multiples of 4 in the encoded data.
    • Line separator: Default is CRLF ("\r\n")

    Since this class operates directly on byte streams, and not character streams, it is hard-coded to only encode/decode character encodings which are compatible with the lower 127 ASCII chart (ISO-8859-1, Windows-1252, UTF-8, etc).

    Since:
    2.2
    See Also:
    RFC 2045
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) static byte[] CHUNK_SEPARATOR
      Deprecated.
      Chunk separator per RFC 2045 section 2.1.
      (package private) static int CHUNK_SIZE
      Deprecated.
      Chunk size per RFC 2045 section 6.8.
      private static byte[] DECODE_TABLE
      Deprecated.
      This array is a lookup table that translates Unicode characters drawn from the "Base64 Alphabet" (as specified in Table 1 of RFC 2045) into their 6-bit positive integer equivalents.
      private int lineLength
      Deprecated.
      Line length for encoding.
      private byte[] lineSeparator
      Deprecated.
      Line separator for encoding.
      private static byte PAD
      Deprecated.
      Byte used to pad output.
      private boolean urlSafe
      Deprecated.
      Whether encoding is URL and filename safe, or not.
    • Constructor Summary

      Constructors 
      Constructor Description
      Base64()
      Deprecated.
      Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
      Base64​(boolean urlSafe)
      Deprecated.
      Creates a Base64 codec used for decoding (all modes) and encoding in the given URL-safe mode.
      Base64​(int lineLength)
      Deprecated.
      Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
      Base64​(int lineLength, byte[] lineSeparator)
      Deprecated.
      Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
      Base64​(int lineLength, byte[] lineSeparator, boolean urlSafe)
      Deprecated.
      Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static boolean containsBase64Byte​(byte[] arrayOctet)
      Deprecated.
      Tests a given byte array to see if it contains any valid character within the Base64 alphabet.
      byte[] decode​(byte[] source)
      Deprecated.
      Decodes a byte array containing characters in the Base64 alphabet.
      byte[] decode​(java.lang.String source)
      Deprecated.
      Decodes a String containing characters in the Base64 alphabet.
      static byte[] decodeBase64​(byte[] base64)
      Deprecated.
      Decodes Base64 data into octets.
      static byte[] decodeBase64​(java.lang.String base64)
      Deprecated.
      Decodes a Base64 String into octets.
      static java.math.BigInteger decodeInteger​(byte[] source)
      Deprecated.
      Decodes a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
      byte[] encode​(byte[] source)
      Deprecated.
      Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
      private static byte[] encode​(byte[] binaryData, int lineLength, byte[] lineSeparator, boolean urlSafe)
      Deprecated.
       
      static byte[] encodeBase64​(byte[] source)
      Deprecated.
      Encodes binary data using the base64 algorithm but does not chunk the output.
      static byte[] encodeBase64​(byte[] binaryData, boolean chunked)
      Deprecated.
      Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
      static byte[] encodeBase64​(byte[] binaryData, boolean chunked, boolean urlSafe)
      Deprecated.
      Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
      static byte[] encodeBase64​(byte[] binaryData, boolean chunked, boolean urlSafe, int maxResultSize)
      Deprecated.
      Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
      static byte[] encodeBase64Chunked​(byte[] binaryData)
      Deprecated.
      Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks separated by CR-LF.
      private static byte[] encodeBase64Chunked​(byte[] binaryData, int lineLength, byte[] lineSeparator)
      Deprecated.
       
      static java.lang.String encodeBase64String​(byte[] binaryData)
      Deprecated.
      Encodes binary data using the base64 algorithm into 76 character blocks separated by CR-LF.
      static java.lang.String encodeBase64String​(byte[] binaryData, boolean chunked)
      Deprecated.
      Encodes binary data using the base64 algorithm.
      static java.lang.String encodeBase64StringUnChunked​(byte[] binaryData)
      Deprecated.
      Encodes binary data using the base64 algorithm, without using chunking.
      static byte[] encodeBase64URLSafe​(byte[] binaryData)
      Deprecated.
      Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output.
      static java.lang.String encodeBase64URLSafeString​(byte[] binaryData)
      Deprecated.
      Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output.
      static byte[] encodeInteger​(java.math.BigInteger bigInt)
      Deprecated.
      Encodes to a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
      java.lang.String encodeToString​(byte[] source)
      Deprecated.
      Encodes a byte[] containing binary data, into a String containing characters in the Base64 alphabet.
      private static java.util.Base64.Decoder getDecoder()
      Deprecated.
       
      (package private) static long getEncodeLength​(byte[] array, int lineSize, byte[] linkSeparator)
      Deprecated.
      Pre-calculates the amount of space needed to base64-encode the supplied array.
      private static java.util.Base64.Encoder getEncoder()
      Deprecated.
       
      (package private) int getLineLength()
      Deprecated.
       
      (package private) byte[] getLineSeparator()
      Deprecated.
       
      private static java.util.Base64.Encoder getMimeEncoder()
      Deprecated.
       
      private static java.util.Base64.Encoder getMimeEncoder​(int lineLength, byte[] lineSeparator)
      Deprecated.
       
      private static java.util.Base64.Encoder getUrlEncoder()
      Deprecated.
       
      static boolean isArrayByteBase64​(byte[] arrayOctet)
      Deprecated.
      Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
      static boolean isBase64​(byte octet)
      Deprecated.
      Returns whether or not the octet is in the base 64 alphabet.
      private static boolean isEmpty​(byte[] array)
      Deprecated.
       
      boolean isUrlSafe()
      Deprecated.
      Tests whether our current encoding mode.
      private static boolean isWhiteSpace​(byte byteToCheck)
      Deprecated.
      Checks if a byte value is whitespace or not.
      private static java.lang.String newStringUtf8​(byte[] encode)
      Deprecated.
       
      private static byte[] toIntegerBytes​(java.math.BigInteger bigInt)
      Deprecated.
      Returns a byte-array representation of a BigInteger without sign bit.
      • Methods inherited from class java.lang.Object

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

      • CHUNK_SIZE

        static final int CHUNK_SIZE
        Deprecated.
        Chunk size per RFC 2045 section 6.8.

        The 76 character limit does not count the trailing CRLF, but counts all other characters, including any equal signs.

        See Also:
        RFC 2045 section 6.8, Constant Field Values
      • CHUNK_SEPARATOR

        static final byte[] CHUNK_SEPARATOR
        Deprecated.
        Chunk separator per RFC 2045 section 2.1.
        See Also:
        RFC 2045 section 2.1
      • PAD

        private static final byte PAD
        Deprecated.
        Byte used to pad output.
        See Also:
        Constant Field Values
      • DECODE_TABLE

        private static final byte[] DECODE_TABLE
        Deprecated.
        This array is a lookup table that translates Unicode characters drawn from the "Base64 Alphabet" (as specified in Table 1 of RFC 2045) into their 6-bit positive integer equivalents. Characters that are not in the Base64 alphabet but fall within the bounds of the array are translated to -1. Note: '+' and '-' both decode to 62. '/' and '_' both decode to 63. This means decoder seamlessly handles both URL_SAFE and STANDARD base64. (The encoder, on the other hand, needs to know ahead of time what to emit). Thanks to "commons" project in ws.apache.org for this code
      • lineLength

        private final int lineLength
        Deprecated.
        Line length for encoding. Not used when decoding. A value of zero or less implies no chunking of the base64 encoded data.
      • lineSeparator

        private final byte[] lineSeparator
        Deprecated.
        Line separator for encoding. Not used when decoding. Only used if lineLength > 0.
      • urlSafe

        private final boolean urlSafe
        Deprecated.
        Whether encoding is URL and filename safe, or not.
    • Constructor Detail

      • Base64

        public Base64()
        Deprecated.
        Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.

        When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.

        When decoding all variants are supported.

      • Base64

        public Base64​(boolean urlSafe)
        Deprecated.
        Creates a Base64 codec used for decoding (all modes) and encoding in the given URL-safe mode.

        When encoding the line length is 76, the line separator is CRLF, and the encoding table is STANDARD_ENCODE_TABLE.

        When decoding all variants are supported.

        Parameters:
        urlSafe - if true, URL-safe encoding is used. In most cases this should be set to false.
        Since:
        1.4
      • Base64

        public Base64​(int lineLength)
        Deprecated.
        Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.

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

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

        When decoding all variants are supported.

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

        public Base64​(int lineLength,
                      byte[] lineSeparator)
        Deprecated.
        Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.

        When encoding the line length and line separator are given in the constructor, and the encoding table is STANDARD_ENCODE_TABLE.

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

        When decoding all variants are supported.

        Parameters:
        lineLength - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 4). 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. Not used for decoding.
        Throws:
        java.lang.IllegalArgumentException - Thrown when the provided lineSeparator included some base64 characters.
        Since:
        1.4
      • Base64

        public Base64​(int lineLength,
                      byte[] lineSeparator,
                      boolean urlSafe)
        Deprecated.
        Creates a Base64 codec used for decoding (all modes) and encoding in URL-unsafe mode.

        When encoding the line length and line separator are given in the constructor, and the encoding table is STANDARD_ENCODE_TABLE.

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

        When decoding all variants are supported.

        Parameters:
        lineLength - Each line of encoded data will be at most of the given length (rounded down to the nearest multiple of 4). 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. Not used for decoding.
        urlSafe - Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode operations. Decoding seamlessly handles both modes.
        Throws:
        java.lang.IllegalArgumentException - The provided lineSeparator included some base64 characters. That's not going to work!
        Since:
        1.4
    • Method Detail

      • containsBase64Byte

        private static boolean containsBase64Byte​(byte[] arrayOctet)
        Deprecated.
        Tests a given byte array to see if it contains any valid character within the Base64 alphabet.
        Parameters:
        arrayOctet - byte array to test
        Returns:
        true if any byte is a valid character in the Base64 alphabet; false otherwise
      • decodeBase64

        public static byte[] decodeBase64​(byte[] base64)
        Deprecated.
        Decodes Base64 data into octets.
        Parameters:
        base64 - Byte array containing Base64 data
        Returns:
        Array containing decoded data.
      • decodeBase64

        public static byte[] decodeBase64​(java.lang.String base64)
        Deprecated.
        Decodes a Base64 String into octets.
        Parameters:
        base64 - String containing Base64 data
        Returns:
        Array containing decoded data.
        Since:
        1.4
      • decodeInteger

        public static java.math.BigInteger decodeInteger​(byte[] source)
        Deprecated.
        Decodes a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
        Parameters:
        source - a byte array containing base64 character data
        Returns:
        A BigInteger
        Since:
        1.4
      • encode

        private static byte[] encode​(byte[] binaryData,
                                     int lineLength,
                                     byte[] lineSeparator,
                                     boolean urlSafe)
        Deprecated.
      • encodeBase64

        public static byte[] encodeBase64​(byte[] source)
        Deprecated.
        Encodes binary data using the base64 algorithm but does not chunk the output.
        Parameters:
        source - binary data to encode
        Returns:
        byte[] containing Base64 characters in their UTF-8 representation.
      • encodeBase64

        public static byte[] encodeBase64​(byte[] binaryData,
                                          boolean chunked)
        Deprecated.
        Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
        Parameters:
        binaryData - Array containing binary data to encode.
        chunked - if true this encoder will chunk the base64 output into 76 character blocks
        Returns:
        Base64-encoded data.
        Throws:
        java.lang.IllegalArgumentException - Thrown when the input array needs an output array bigger than Integer.MAX_VALUE
      • encodeBase64

        public static byte[] encodeBase64​(byte[] binaryData,
                                          boolean chunked,
                                          boolean urlSafe)
        Deprecated.
        Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
        Parameters:
        binaryData - Array containing binary data to encode.
        chunked - if true this encoder will chunk the base64 output into 76 character blocks
        urlSafe - if true this encoder will emit - and _ instead of the usual + and / characters.
        Returns:
        Base64-encoded data.
        Throws:
        java.lang.IllegalArgumentException - Thrown when the input array needs an output array bigger than Integer.MAX_VALUE
        Since:
        1.4
      • encodeBase64

        public static byte[] encodeBase64​(byte[] binaryData,
                                          boolean chunked,
                                          boolean urlSafe,
                                          int maxResultSize)
        Deprecated.
        Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
        Parameters:
        binaryData - Array containing binary data to encode.
        chunked - if true this encoder will chunk the base64 output into 76 character blocks
        urlSafe - if true this encoder will emit - and _ instead of the usual + and / characters.
        maxResultSize - The maximum result size to accept.
        Returns:
        Base64-encoded data.
        Throws:
        java.lang.IllegalArgumentException - Thrown when the input array needs an output array bigger than maxResultSize
        Since:
        1.4
      • encodeBase64Chunked

        public static byte[] encodeBase64Chunked​(byte[] binaryData)
        Deprecated.
        Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks separated by CR-LF.

        The return value ends in a CR-LF.

        Parameters:
        binaryData - binary data to encode
        Returns:
        Base64 characters chunked in 76 character blocks
        Throws:
        java.lang.ArithmeticException - if the binaryData would overflows a byte[].
      • encodeBase64Chunked

        private static byte[] encodeBase64Chunked​(byte[] binaryData,
                                                  int lineLength,
                                                  byte[] lineSeparator)
        Deprecated.
      • encodeBase64String

        public static java.lang.String encodeBase64String​(byte[] binaryData)
        Deprecated.
        Encodes binary data using the base64 algorithm into 76 character blocks separated by CR-LF.

        The return value ends in a CR-LF.

        For a non-chunking version, see encodeBase64StringUnChunked(byte[]).

        Parameters:
        binaryData - binary data to encode
        Returns:
        String containing Base64 characters.
        Since:
        1.4
      • encodeBase64String

        public static java.lang.String encodeBase64String​(byte[] binaryData,
                                                          boolean chunked)
        Deprecated.
        Encodes binary data using the base64 algorithm.
        Parameters:
        binaryData - binary data to encode
        chunked - whether to split the output into chunks
        Returns:
        String containing Base64 characters.
        Since:
        3.2
      • encodeBase64StringUnChunked

        public static java.lang.String encodeBase64StringUnChunked​(byte[] binaryData)
        Deprecated.
        Encodes binary data using the base64 algorithm, without using chunking.

        For a chunking version, see encodeBase64String(byte[]).

        Parameters:
        binaryData - binary data to encode
        Returns:
        String containing Base64 characters.
        Since:
        3.2
      • encodeBase64URLSafe

        public static byte[] encodeBase64URLSafe​(byte[] binaryData)
        Deprecated.
        Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The url-safe variation emits - and _ instead of + and / characters.
        Parameters:
        binaryData - binary data to encode
        Returns:
        byte[] containing Base64 characters in their UTF-8 representation.
        Since:
        1.4
      • encodeBase64URLSafeString

        public static java.lang.String encodeBase64URLSafeString​(byte[] binaryData)
        Deprecated.
        Encodes binary data using a URL-safe variation of the base64 algorithm but does not chunk the output. The url-safe variation emits - and _ instead of + and / characters.
        Parameters:
        binaryData - binary data to encode
        Returns:
        String containing Base64 characters
        Since:
        1.4
      • encodeInteger

        public static byte[] encodeInteger​(java.math.BigInteger bigInt)
        Deprecated.
        Encodes to a byte64-encoded integer according to crypto standards such as W3C's XML-Signature
        Parameters:
        bigInt - a BigInteger
        Returns:
        A byte array containing base64 character data
        Throws:
        java.lang.NullPointerException - if null is passed in
        Since:
        1.4
      • getDecoder

        private static java.util.Base64.Decoder getDecoder()
        Deprecated.
      • getEncodeLength

        static long getEncodeLength​(byte[] array,
                                    int lineSize,
                                    byte[] linkSeparator)
        Deprecated.
        Pre-calculates the amount of space needed to base64-encode the supplied array.
        Parameters:
        array - byte[] array which will later be encoded
        lineSize - line-length of the output (<= 0 means no chunking) between each chunkSeparator (e.g. CRLF).
        linkSeparator - the sequence of bytes used to separate chunks of output (e.g. CRLF).
        Returns:
        amount of space needed to encode the supplied array. Returns a long since a max-len array will require Integer.MAX_VALUE + 33%.
      • getEncoder

        private static java.util.Base64.Encoder getEncoder()
        Deprecated.
      • getMimeEncoder

        private static java.util.Base64.Encoder getMimeEncoder()
        Deprecated.
      • getMimeEncoder

        private static java.util.Base64.Encoder getMimeEncoder​(int lineLength,
                                                               byte[] lineSeparator)
        Deprecated.
      • getUrlEncoder

        private static java.util.Base64.Encoder getUrlEncoder()
        Deprecated.
      • isArrayByteBase64

        public static boolean isArrayByteBase64​(byte[] arrayOctet)
        Deprecated.
        Tests a given byte array to see if it contains only valid characters within the Base64 alphabet. Currently, the method treats whitespace as valid.
        Parameters:
        arrayOctet - byte array to test
        Returns:
        true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty; false, otherwise
      • isBase64

        public static boolean isBase64​(byte octet)
        Deprecated.
        Returns whether or not the octet is in the base 64 alphabet.
        Parameters:
        octet - The value to test
        Returns:
        true if the value is defined in the base 64 alphabet, false otherwise.
        Since:
        1.4
      • isEmpty

        private static boolean isEmpty​(byte[] array)
        Deprecated.
      • isWhiteSpace

        private static boolean isWhiteSpace​(byte byteToCheck)
        Deprecated.
        Checks if a byte value is whitespace or not.
        Parameters:
        byteToCheck - the byte to check
        Returns:
        true if byte is whitespace, false otherwise
      • newStringUtf8

        private static java.lang.String newStringUtf8​(byte[] encode)
        Deprecated.
      • toIntegerBytes

        private static byte[] toIntegerBytes​(java.math.BigInteger bigInt)
        Deprecated.
        Returns a byte-array representation of a BigInteger without sign bit.
        Parameters:
        bigInt - BigInteger to be converted
        Returns:
        a byte array representation of the BigInteger parameter
      • decode

        public byte[] decode​(byte[] source)
        Deprecated.
        Decodes a byte array containing characters in the Base64 alphabet.
        Parameters:
        source - A byte array containing Base64 character data
        Returns:
        a byte array containing binary data; will return null if provided byte array is null.
      • decode

        public byte[] decode​(java.lang.String source)
        Deprecated.
        Decodes a String containing characters in the Base64 alphabet.
        Parameters:
        source - A String containing Base64 character data, must not be null
        Returns:
        a byte array containing binary data
        Since:
        1.4
      • encode

        public byte[] encode​(byte[] source)
        Deprecated.
        Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
        Parameters:
        source - a byte array containing binary data
        Returns:
        A byte array containing only Base64 character data
      • encodeToString

        public java.lang.String encodeToString​(byte[] source)
        Deprecated.
        Encodes a byte[] containing binary data, into a String containing characters in the Base64 alphabet.
        Parameters:
        source - a byte array containing binary data
        Returns:
        A String containing only Base64 character data
        Since:
        1.4
      • getLineLength

        int getLineLength()
        Deprecated.
      • getLineSeparator

        byte[] getLineSeparator()
        Deprecated.
      • isUrlSafe

        public boolean isUrlSafe()
        Deprecated.
        Tests whether our current encoding mode. True if we're URL-SAFE, false otherwise.
        Returns:
        true if we're in URL-SAFE mode, false otherwise.
        Since:
        1.4