/* See LICENSE for licensing and NOTICE for copyright. */ package org.cryptacular.codec; import java.util.Arrays; /** * Stateful base 32 decoder with support for line breaks. * * @author Middleware Services */ public class Base32Decoder extends AbstractBaseNDecoder { /** Base-32 character decoding table. */ private static final byte[] DECODING_TABLE = new byte[128]; /** * Initializes the character decoding table. */ static { Arrays.fill(DECODING_TABLE, (byte) -1); for (int i = 0; i < 26; i++) { DECODING_TABLE[i + 65] = (byte) i; } for (int i = 0; i < 6; i++) { DECODING_TABLE[i + 50] = (byte) (i + 26); } } /** Creates a new instance. */ public Base32Decoder() { super(DECODING_TABLE); } @Override protected int getBlockLength() { return 40; } @Override protected int getBitsPerChar() { return 5; } }