Package org.cryptacular.codec
Class AbstractBaseNDecoder
java.lang.Object
org.cryptacular.codec.AbstractBaseNDecoder
- All Implemented Interfaces:
Decoder
- Direct Known Subclasses:
Base32Decoder
,Base64Decoder
Base decoder class for encoding schemes described in RFC 3548.
- Author:
- Middleware Services
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractBaseNDecoder
(byte[] decodingTable) Creates a new instance with given parameters. -
Method Summary
Modifier and TypeMethodDescriptionvoid
decode
(CharBuffer input, ByteBuffer output) Decodes characters in input buffer into bytes placed in the output buffer.protected static byte[]
decodingTable
(String alphabet, int n) Converts the given alphabet into a base-N decoding table.void
finalize
(ByteBuffer output) Performs final output decoding (e.g.protected abstract int
protected abstract int
boolean
int
outputSize
(int inputSize) Expected number of bytes in the output buffer for an input buffer of the given size.void
setPaddedInput
(boolean enabled) Determines whether padded input is accepted.
-
Constructor Details
-
AbstractBaseNDecoder
public AbstractBaseNDecoder(byte[] decodingTable) Creates a new instance with given parameters.- Parameters:
decodingTable
- Byte array indexed by characters in the character set encoding.
-
-
Method Details
-
isPaddedInput
public boolean isPaddedInput()- Returns:
- True if padded input is accepted (default), false otherwise.
-
setPaddedInput
public void setPaddedInput(boolean enabled) Determines whether padded input is accepted.- Parameters:
enabled
- True to enable support for padded input, false otherwise.
-
decode
Description copied from interface:Decoder
Decodes characters in input buffer into bytes placed in the output buffer. This method may be called multiple times, followed byDecoder.finalize(ByteBuffer)
. after all input bytes have been provided.- Specified by:
decode
in interfaceDecoder
- Parameters:
input
- Input character buffer.output
- Output byte buffer.- Throws:
EncodingException
- on decoding errors.
-
finalize
Description copied from interface:Decoder
Performs final output decoding (e.g. padding) after all input characters have been provided.- Specified by:
finalize
in interfaceDecoder
- Parameters:
output
- Output byte buffer.- Throws:
EncodingException
- on decoding errors.
-
outputSize
public int outputSize(int inputSize) Description copied from interface:Decoder
Expected number of bytes in the output buffer for an input buffer of the given size.- Specified by:
outputSize
in interfaceDecoder
- Parameters:
inputSize
- Size of input buffer in characters.- Returns:
- Minimum byte buffer size required to store all decoded characters in input buffer.
-
getBlockLength
protected abstract int getBlockLength()- Returns:
- Number of bits in a block of encoded characters.
-
getBitsPerChar
protected abstract int getBitsPerChar()- Returns:
- Number of bits encoding a single character.
-
decodingTable
Converts the given alphabet into a base-N decoding table.- Parameters:
alphabet
- Decoding alphabet to use.n
- Encoding base.- Returns:
- Decoding table of 128 elements.
-