Class Base64


  • public class Base64
    extends Object
    Provides Base 64 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.

    This class was borrowed from Apache Commons Codec SVN repository (rev. 618419) with modifications to enable Base64 conversion without a full dependency on Commons Codec. We didn't want to reinvent the wheel of great work they've done, but also didn't want to force every Shiro user to depend on the commons-codec.jar

    As per the Apache 2.0 license, the original copyright notice and all author and copyright information have remained in tact.

    Since:
    0.9
    See Also:
    Wikipedia: Base 64, RFC 2045
    • Constructor Summary

      Constructors 
      Constructor Description
      Base64()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static byte[] decode​(byte[] base64Data)
      Decodes Base64 data into octets
      static byte[] decode​(String base64Encoded)
      Converts the specified UTF-8 Base64 encoded String and decodes it to a raw Base64 decoded byte array.
      static String decodeToString​(byte[] base64Encoded)
      Decodes the specified Base64 encoded byte array and returns the decoded result as a UTF-8 encoded.
      static String decodeToString​(String base64Encoded)
      Converts the specified UTF-8 Base64 encoded String and decodes it to a resultant UTF-8 encoded string.
      static byte[] encode​(byte[] pArray)
      Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
      static byte[] encode​(byte[] binaryData, boolean isChunked)
      Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
      static byte[] encodeChunked​(byte[] binaryData)
      Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks
      static String encodeToString​(byte[] bytes)
      Base64 encodes the specified byte array and then encodes it as a String using Shiro's preferred character encoding (UTF-8).
      static boolean isBase64​(byte[] arrayOctect)
      Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
    • Constructor Detail

    • Method Detail

      • isBase64

        public static boolean isBase64​(byte[] arrayOctect)
        Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
        Parameters:
        arrayOctect - 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
      • encodeToString

        public static String encodeToString​(byte[] bytes)
        Base64 encodes the specified byte array and then encodes it as a String using Shiro's preferred character encoding (UTF-8).
        Parameters:
        bytes - the byte array to Base64 encode.
        Returns:
        a UTF-8 encoded String of the resulting Base64 encoded byte array.
      • encodeChunked

        public static byte[] encodeChunked​(byte[] binaryData)
        Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks
        Parameters:
        binaryData - binary data to encodeToChars
        Returns:
        Base64 characters chunked in 76 character blocks
      • encode

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

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

        public static String decodeToString​(String base64Encoded)
        Converts the specified UTF-8 Base64 encoded String and decodes it to a resultant UTF-8 encoded string.
        Parameters:
        base64Encoded - a UTF-8 Base64 encoded String
        Returns:
        the decoded String, UTF-8 encoded.
      • decodeToString

        public static String decodeToString​(byte[] base64Encoded)
        Decodes the specified Base64 encoded byte array and returns the decoded result as a UTF-8 encoded.
        Parameters:
        base64Encoded - a Base64 encoded byte array
        Returns:
        the decoded String, UTF-8 encoded.
      • decode

        public static byte[] decode​(String base64Encoded)
        Converts the specified UTF-8 Base64 encoded String and decodes it to a raw Base64 decoded byte array.
        Parameters:
        base64Encoded - a UTF-8 Base64 encoded String
        Returns:
        the raw Base64 decoded byte array.
      • decode

        public static byte[] decode​(byte[] base64Data)
        Decodes Base64 data into octets
        Parameters:
        base64Data - Byte array containing Base64 data
        Returns:
        Array containing decoded data.