Class Base64


  • public class Base64
    extends java.lang.Object
    Implementation of MIME's Base64 encoding and decoding conversions. Optimized code. (raw version taken from oreilly.jonathan.util, and currently org.apache.xerces.ds.util.Base64)
    Author:
    Raul Benito(Of the xerces copy, and little adaptations)., Anli Shundi, Christian Geuer-Pollmann
    See Also:
    RFC 2045, TransformBase64Decode
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int BASE64DEFAULTLENGTH
      Field BASE64DEFAULTLENGTH
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static byte[] decode​(byte[] base64)
      Method decode
      static void decode​(byte[] base64Data, java.io.OutputStream os)
      Decodes Base64 data into outputstream
      protected static void decode​(byte[] base64Data, java.io.OutputStream os, int len)  
      static byte[] decode​(java.io.BufferedReader reader)
      Base64 decode the lines from the reader and return an InputStream with the bytes.
      static void decode​(java.io.InputStream is, java.io.OutputStream os)
      Decodes Base64 data into outputstream
      static byte[] decode​(java.lang.String encoded)
      Decodes Base64 data into octets
      static void decode​(java.lang.String base64Data, java.io.OutputStream os)
      Decodes Base64 data into outputstream
      static byte[] decode​(org.w3c.dom.Element element)
      Method decode Takes the Text children of the Element and interprets them as input for the Base64.decode() function.
      static java.math.BigInteger decodeBigIntegerFromElement​(org.w3c.dom.Element element)
      Method decodeBigIntegerFromElement
      static java.math.BigInteger decodeBigIntegerFromString​(java.lang.String base64str)
      Decode a base 64 string into a BigInteger
      protected static byte[] decodeInternal​(byte[] base64Data, int len)  
      static java.lang.String encode​(byte[] binaryData)
      Encode a byte array and fold lines at the standard 76th character unless ignore line breaks property is set.
      static java.lang.String encode​(byte[] binaryData, int length)
      Encode a byte array in Base64 format and return an optionally wrapped line.
      static java.lang.String encode​(java.math.BigInteger big)
      Encode in Base64 the given BigInteger.
      static byte[] encode​(java.math.BigInteger big, int bitlen)
      Returns a byte-array representation of a BigInteger.
      static org.w3c.dom.Element encodeToElement​(org.w3c.dom.Document doc, java.lang.String localName, byte[] bytes)
      Method encodeToElement
      static void fillElementWithBigInteger​(org.w3c.dom.Element element, java.math.BigInteger biginteger)
      This method takes an (empty) Element and a BigInteger and adds the base64 encoded BigInteger to the Element.
      protected static int getBytesInternal​(java.lang.String s, byte[] result)  
      protected static boolean isPad​(byte octet)  
      protected static boolean isWhiteSpace​(byte octet)  
      protected static int removeWhiteSpace​(byte[] data)
      remove WhiteSpace from MIME containing encoded Base64 data.
      • Methods inherited from class java.lang.Object

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

      • BASE64DEFAULTLENGTH

        public static final int BASE64DEFAULTLENGTH
        Field BASE64DEFAULTLENGTH
        See Also:
        Constant Field Values
    • Method Detail

      • encode

        public static final java.lang.String encode​(java.math.BigInteger big)
        Encode in Base64 the given BigInteger.
        Parameters:
        big -
        Returns:
        String with Base64 encoding
      • encode

        public static final byte[] encode​(java.math.BigInteger big,
                                          int bitlen)
        Returns a byte-array representation of a BigInteger. No sign-bit is output. N.B.: BigInteger's toByteArray returns eventually longer arrays because of the leading sign-bit.
        Parameters:
        big - BigInteger to be converted
        bitlen - int the desired length in bits of the representation
        Returns:
        a byte array with bitlen bits of big
      • decodeBigIntegerFromElement

        public static final java.math.BigInteger decodeBigIntegerFromElement​(org.w3c.dom.Element element)
                                                                      throws Base64DecodingException
        Method decodeBigIntegerFromElement
        Parameters:
        element -
        Returns:
        the biginteger obtained from the node
        Throws:
        Base64DecodingException
      • decodeBigIntegerFromString

        public static java.math.BigInteger decodeBigIntegerFromString​(java.lang.String base64str)
                                                               throws Base64DecodingException
        Decode a base 64 string into a BigInteger
        Parameters:
        base64str - Base 64 encoded string.
        Returns:
        a decoded BigInteger
        Throws:
        Base64DecodingException
      • fillElementWithBigInteger

        public static final void fillElementWithBigInteger​(org.w3c.dom.Element element,
                                                           java.math.BigInteger biginteger)
        This method takes an (empty) Element and a BigInteger and adds the base64 encoded BigInteger to the Element.
        Parameters:
        element -
        biginteger -
      • decode

        public static final byte[] decode​(org.w3c.dom.Element element)
                                   throws Base64DecodingException
        Method decode Takes the Text children of the Element and interprets them as input for the Base64.decode() function.
        Parameters:
        element -
        Returns:
        the byte obtained of the decoding the element $todo$ not tested yet
        Throws:
        Base64DecodingException
      • encodeToElement

        public static final org.w3c.dom.Element encodeToElement​(org.w3c.dom.Document doc,
                                                                java.lang.String localName,
                                                                byte[] bytes)
        Method encodeToElement
        Parameters:
        doc -
        localName -
        bytes -
        Returns:
        an Element with the base64 encoded in the text.
      • encode

        public static final java.lang.String encode​(byte[] binaryData)
        Encode a byte array and fold lines at the standard 76th character unless ignore line breaks property is set.
        Parameters:
        binaryData - byte[] to be base64 encoded
        Returns:
        the String with encoded data
      • decode

        public static final byte[] decode​(java.io.BufferedReader reader)
                                   throws java.io.IOException,
                                          Base64DecodingException
        Base64 decode the lines from the reader and return an InputStream with the bytes.
        Parameters:
        reader -
        Returns:
        InputStream with the decoded bytes
        Throws:
        java.io.IOException - passes what the reader throws
        java.io.IOException
        Base64DecodingException
      • isWhiteSpace

        protected static final boolean isWhiteSpace​(byte octet)
      • isPad

        protected static final boolean isPad​(byte octet)
      • encode

        public static final java.lang.String encode​(byte[] binaryData,
                                                    int length)
        Encode a byte array in Base64 format and return an optionally wrapped line.
        Parameters:
        binaryData - byte[] data to be encoded
        length - int length of wrapped lines; No wrapping if less than 4.
        Returns:
        a String with encoded data
      • decode

        public static final byte[] decode​(java.lang.String encoded)
                                   throws Base64DecodingException
        Decodes Base64 data into octets
        Parameters:
        encoded - String containing base64 encoded data
        Returns:
        byte array containing the decoded data
        Throws:
        Base64DecodingException - if there is a problem decoding the data
      • getBytesInternal

        protected static final int getBytesInternal​(java.lang.String s,
                                                    byte[] result)
      • decode

        public static final void decode​(java.lang.String base64Data,
                                        java.io.OutputStream os)
                                 throws Base64DecodingException,
                                        java.io.IOException
        Decodes Base64 data into outputstream
        Parameters:
        base64Data - String containing Base64 data
        os - the outputstream
        Throws:
        java.io.IOException
        Base64DecodingException
      • decode

        public static final void decode​(byte[] base64Data,
                                        java.io.OutputStream os)
                                 throws Base64DecodingException,
                                        java.io.IOException
        Decodes Base64 data into outputstream
        Parameters:
        base64Data - Byte array containing Base64 data
        os - the outputstream
        Throws:
        java.io.IOException
        Base64DecodingException
      • decode

        public static final void decode​(java.io.InputStream is,
                                        java.io.OutputStream os)
                                 throws Base64DecodingException,
                                        java.io.IOException
        Decodes Base64 data into outputstream
        Parameters:
        is - containing Base64 data
        os - the outputstream
        Throws:
        java.io.IOException
        Base64DecodingException
      • removeWhiteSpace

        protected static final int removeWhiteSpace​(byte[] data)
        remove WhiteSpace from MIME containing encoded Base64 data.
        Parameters:
        data - the byte array of base64 data (with WS)
        Returns:
        the new length