Base32 x Base16

Sabemos que alguns caracteres não podem ser exibidos ou usados em alguns ambientes.

Por exemplo, caracteres como &, = são reservados como caracteres com funções especiais em URLs, como descrever uma imagem e se o código binário na imagem for convertido no correspondente caractere, haverá muitos caracteres invisíveis e caracteres de controle (como avanço de linha, retorno de ponteiro, etc.) que são precisos codificá-los para a transferencia via rede sem perdas.

Os algoritmos Base são usados principalmente para a representação correta na transferencia de bytes na internet, codificando esses bytes em caracteres ASCII.

Esse tipo de algoritmo não é utilizado para criptografia, mas sim para codificação.

Nunca deve-se utilizar esse tipo de algoritmo para guardar uma senha, ou transferir dados de forma segura.

Claro, se você quiser embaralhar os caracteres utilizados na sequência de codificação, é outra história, porem você terá que lembrar a sequência de caracteres utilizado no embaralhamento para desembaralhar o conteúdo.

Base32

A codificação Base32 segmenta os dados em grupos de 5 bytes.

Cada grupo de 5 bytes é então convertido em 8 caracteres.

Se um grupo não contiver bytes suficientes, zeros são adicionados após o último byte para completar o grupo de 5 bytes, e o sinal = é usado para preencher até atingir 8 caracteres.

Por exemplo, para codificar uma seção de 5 bytes, esses bytes são divididos e reorganizados para formar 8 caracteres. Se forem codificados 6 bytes, após a primeira reorganização que gera 8 caracteres, a segunda reorganização exigirá a adição de dois zeros e seis sinais de igual (=), resultando em uma sequência do tipo xxxxx xxx00 ====== para completar os 8 caracteres necessários.

A codificação Base32 utiliza 32 caracteres distintos, aumentando a quantidade de dados em uma proporção de 8/5. Conforme o texto codificado se alonga, o impacto dos dados adicionais (zeros e sinais de =) no final se torna praticamente insignificante.

Além do esquema principal de codificação, o base32 têm formas alternativas de dicionário, como o z-base-32, Crockford’s Base32, Electrologica, Geohash, Word-safe.

Existem dois esquemas principais para a codificação de caracteres em Base32: o esquema alfabético e o esquema alfabético hexadecimal estendido.

Base16

A codificação Base16, também conhecida como codificação hexadecimal, divide os dados em bytes individuais.

Cada byte é então representado por dois caracteres hexadecimais. Isso significa que cada dígito hexadecimal pode representar 4 bits, portanto, um byte (8 bits) é codificado como dois dígitos hexadecimais.

Por exemplo, o byte com o valor decimal 255 é representado em hexadecimal como FF. Assim, na codificação Base16, cada byte de dados é convertido diretamente em dois caracteres hexadecimais.

Essa relação direta de 1 byte para 2 caracteres resulta em uma expansão de dados na proporção de 2/1, ou seja, o tamanho do dado codificado é exatamente o dobro do dado original.

A codificação Base16 utiliza 16 caracteres distintos, que são os dígitos de 0-9 e as letras de A-F.

Não há uso de caracteres adicionais como padding ao final dos dados, pois a conversão de cada byte é completa com dois dígitos hexadecimais.

Em resumo, a codificação Base16 é direta e não incorpora complexidades adicionais como preenchimento ou expansão significativa além do dobro do tamanho do dado original.

Sobre Nicolau 37 Artigos
Fuçando o desenvolvimento de software desde 2013, sou da turma do código aberto, vivo pesquisando e garimpando a segurança na web. Sommelier de sucos e chocólatra de carteirinha. Hic svnt dracones.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*