Package org.codehaus.plexus.util
Class Base64
java.lang.Object
org.codehaus.plexus.util.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.
- Since:
- 1.0-dev
- Version:
- $Id$
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static byte[]Contains the Base64 values0through63accessed by using character encodings as indices.(package private) static final intThe base length.(package private) static final byte[]Chunk separator per RFC 2045 section 2.1.(package private) static final intChunk size per RFC 2045 section 6.8.(package private) static final intUsed to calculate the number of bits in a byte.(package private) static final intUsed to get the number of Quadruples.private static byte[]Contains the Base64 encodingsAthroughZ, followed byathroughz, followed by0through9, followed by+, and/.(package private) static final intLookup length.(package private) static final byteByte used to pad output.(package private) static final intUsed to test the sign of a byte.(package private) static final intUsed when encoding something which has fewer than 24 bits.(package private) static final intUsed to determine how many bits data contains. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]decode(byte[] pArray) Decodes a byte[] containing containing characters in the Base64 alphabet.static byte[]decodeBase64(byte[] base64Data) Decodes Base64 data into octects(package private) static byte[]discardNonBase64(byte[] data) Discards any characters outside of the base64 alphabet, per the requirements on page 25 of RFC 2045 - "Any characters outside of the base64 alphabet are to be ignored in base64 encoded data."(package private) static byte[]discardWhitespace(byte[] data) Discards any whitespace from a base-64 encoded block.byte[]encode(byte[] pArray) Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.static byte[]encodeBase64(byte[] binaryData) Encodes binary data using the base64 algorithm but does not chunk the output.static byte[]encodeBase64(byte[] binaryData, boolean isChunked) Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.static byte[]encodeBase64Chunked(byte[] binaryData) Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocksstatic booleanisArrayByteBase64(byte[] arrayOctect) Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.private static booleanisBase64(byte octect) Returns whether or not theoctectis in the base 64 alphabet.
-
Field Details
-
CHUNK_SIZE
static final int CHUNK_SIZEChunk 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:
-
CHUNK_SEPARATOR
static final byte[] CHUNK_SEPARATORChunk separator per RFC 2045 section 2.1.- See Also:
-
BASELENGTH
static final int BASELENGTHThe base length.- See Also:
-
LOOKUPLENGTH
static final int LOOKUPLENGTHLookup length.- See Also:
-
EIGHTBIT
static final int EIGHTBITUsed to calculate the number of bits in a byte.- See Also:
-
SIXTEENBIT
static final int SIXTEENBITUsed when encoding something which has fewer than 24 bits.- See Also:
-
TWENTYFOURBITGROUP
static final int TWENTYFOURBITGROUPUsed to determine how many bits data contains.- See Also:
-
FOURBYTE
static final int FOURBYTEUsed to get the number of Quadruples.- See Also:
-
SIGN
static final int SIGNUsed to test the sign of a byte.- See Also:
-
PAD
static final byte PADByte used to pad output.- See Also:
-
base64Alphabet
private static byte[] base64AlphabetContains the Base64 values0through63accessed by using character encodings as indices.For example,
base64Alphabet['+']returns62.The value of undefined encodings is
-1. -
lookUpBase64Alphabet
private static byte[] lookUpBase64AlphabetContains the Base64 encodings
AthroughZ, followed byathroughz, followed by0through9, followed by+, and/.This array is accessed by using character values as indices.
For example,
lookUpBase64Alphabet[62]returns'+'.
-
-
Constructor Details
-
Base64
public Base64()
-
-
Method Details
-
isBase64
private static boolean isBase64(byte octect) Returns whether or not theoctectis in the base 64 alphabet.- Parameters:
octect- The value to test- Returns:
trueif the value is defined in the the base 64 alphabet,falseotherwise.
-
isArrayByteBase64
public static boolean isArrayByteBase64(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:
trueif all bytes are valid characters in the Base64 alphabet or if the byte array is empty; false, otherwise
-
encodeBase64
public static byte[] encodeBase64(byte[] binaryData) Encodes binary data using the base64 algorithm but does not chunk the output.- Parameters:
binaryData- binary data to encode- Returns:
- Base64 characters
-
encodeBase64Chunked
public static byte[] encodeBase64Chunked(byte[] binaryData) Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks- Parameters:
binaryData- binary data to encode- Returns:
- Base64 characters chunked in 76 character blocks
-
decode
public byte[] decode(byte[] pArray) Decodes a byte[] containing containing characters in the Base64 alphabet.- Parameters:
pArray- A byte array containing Base64 character data- Returns:
- a byte array containing binary data
-
encodeBase64
public static byte[] encodeBase64(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 encode.isChunked- iftruethis encoder will chunk the base64 output into 76 character blocks- Returns:
- Base64-encoded data.
-
decodeBase64
public static byte[] decodeBase64(byte[] base64Data) Decodes Base64 data into octects- Parameters:
base64Data- Byte array containing Base64 data- Returns:
- Array containing decoded data.
-
discardWhitespace
static byte[] discardWhitespace(byte[] data) Discards any whitespace from a base-64 encoded block.- Parameters:
data- The base-64 encoded data to discard the whitespace from.- Returns:
- The data, less whitespace (see RFC 2045).
-
discardNonBase64
static byte[] discardNonBase64(byte[] data) Discards any characters outside of the base64 alphabet, per the requirements on page 25 of RFC 2045 - "Any characters outside of the base64 alphabet are to be ignored in base64 encoded data."- Parameters:
data- The base-64 encoded data to groom- Returns:
- The data, less non-base64 characters (see RFC 2045).
-
encode
public 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
-