Java, Codificação e Decodificação em base 64

O meu problema é o seguinte, participo de um projeto no qual estamos tentando criar a nossa própria codificação em base 64, que é a seguinte:

public static String encodeNumeroSeguranca(String nsec) {
    
    char[] array = nsec.toCharArray();
    StringBuilder palavraCodificada = new StringBuilder();

    for (int i = 0; i < array.length; i++) {

        switch (array[i]) {
            case '0': palavraCodificada.append("Num correspondente"); break;
            case '1': palavraCodificada.append("Num correspondente"); break;
            // Resto da codificação
            case '+': palavraCodificada.append("Num correspondente"); break;
            case '/': palavraCodificada.append("Num correspondente"); break;
            default: break;
        }
    }
    return palavraCodificada.toString();
}`

Conseguimos fazer a codificação sem problemas e conseguimos a representação em bytes do número de segurança (o que estamos querendo codificar) do seguinte modo:

`public static void main(String args[]) throws IOException {

    String retorno = encodeNumeroSeguranca("Numero de Seguranca");
    System.out.println("Palavra Codificada: \n" + retorno);
    String aux;
    byte codificacao[] = new byte[256]; //Tamanho em bytes que ficará a codificação
    int inicio, fim;
    
    for (int i = 0; i < codificacao.length; i++) {
        inicio = i * 8;   
        fim = inicio + 7;
        aux = retorno.substring(inicio, fim); // Conseguindo os 8 bits para formar um byte
        codificacao[i] = Byte.parseByte(aux, 2); 
    }`

Porém, preciso fazer o inverso, preciso ler os bytes e transformar na representação exata de bits que tinha anteriormente, mas tentei vários métodos e não consegui achar nada que me desse alguma resposta certa. Alguma indicação ou ajuda pra me poder fazer o decode() ?

Agradeço, desde já.

Apesar de vc ter dito que estão criando o próprio decode, não custa nada dar uma olhada nesta resposta:


E tbm aconcelho utilizar map no lugar de switch