Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

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

$
0
0

@victo_java escreveu:

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("000000"); break;
            case '1': palavraCodificada.append("000001"); break;
            case '2': palavraCodificada.append("000010"); break;
            case '3': palavraCodificada.append("000011"); break;
            case '4': palavraCodificada.append("000100"); break;
            case '5': palavraCodificada.append("000101"); break;
            case '6': palavraCodificada.append("000110"); break;
            case '7': palavraCodificada.append("000111"); break;
            case '8': palavraCodificada.append("001000"); break;
            case '9': palavraCodificada.append("001001"); break;
            case 'a': palavraCodificada.append("001010"); break;
            case 'b': palavraCodificada.append("001011"); break;
            case 'c': palavraCodificada.append("001100"); break;
            case 'd': palavraCodificada.append("001101"); break;
            case 'e': palavraCodificada.append("001110"); break;
            case 'f': palavraCodificada.append("001111"); break;
            case 'g': palavraCodificada.append("010000"); break;
            case 'h': palavraCodificada.append("010001"); break;
            case 'i': palavraCodificada.append("010010"); break;
            case 'j': palavraCodificada.append("010011"); break;
            case 'k': palavraCodificada.append("010100"); break;
            case 'l': palavraCodificada.append("010101"); break;
            case 'm': palavraCodificada.append("010110"); break;
            case 'n': palavraCodificada.append("010111"); break;
            case 'o': palavraCodificada.append("011000"); break;
            case 'p': palavraCodificada.append("011001"); break;
            case 'q': palavraCodificada.append("011010"); break;
            case 'r': palavraCodificada.append("011011"); break;
            case 's': palavraCodificada.append("011100"); break;
            case 't': palavraCodificada.append("011101"); break;
            case 'u': palavraCodificada.append("011110"); break;
            case 'v': palavraCodificada.append("011111"); break;
            case 'w': palavraCodificada.append("100000"); break;
            case 'x': palavraCodificada.append("100001"); break;
            case 'y': palavraCodificada.append("100010"); break;
            case 'z': palavraCodificada.append("100011"); break;
            case 'A': palavraCodificada.append("100100"); break;
            case 'B': palavraCodificada.append("100101");  break;
            case 'C': palavraCodificada.append("100110"); break;
            case 'D': palavraCodificada.append("100111"); break;
            case 'E': palavraCodificada.append("101000"); break;
            case 'F': palavraCodificada.append("101001"); break;
            case 'G': palavraCodificada.append("101010"); break;
            case 'H': palavraCodificada.append("101011"); break;
            case 'I': palavraCodificada.append("101100"); break;
            case 'J': palavraCodificada.append("101101"); break;
            case 'K': palavraCodificada.append("101110"); break;
            case 'L': palavraCodificada.append("101111"); break;
            case 'M': palavraCodificada.append("110000"); break;
            case 'N': palavraCodificada.append("110001"); break;
            case 'O': palavraCodificada.append("110010"); break;
            case 'P': palavraCodificada.append("110011"); break;
            case 'Q': palavraCodificada.append("110100"); break;
            case 'R': palavraCodificada.append("110101"); break;
            case 'S': palavraCodificada.append("110110"); break;
            case 'T': palavraCodificada.append("110111"); break;
            case 'U': palavraCodificada.append("111000"); break;
            case 'V': palavraCodificada.append("111001"); break;
            case 'W': palavraCodificada.append("111010"); break;
            case 'X': palavraCodificada.append("111011"); break;
            case 'Y': palavraCodificada.append("111100"); break;
            case 'Z': palavraCodificada.append("111101"); break;
            case '+': palavraCodificada.append("111110"); break;
            case '/': palavraCodificada.append("111111"); 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á.

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>