Conversor de Hex para Base64

Cole bytes em hexadecimal e obtenha os mesmos dados em Base64. Separadores como espaços, dois-pontos e prefixos 0x são removidos automaticamente, então hashes e impressões digitais podem ser colados como estão.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Cole a string hex no campo Entrada. Hexadecimal já vem selecionado em De e Base64 em Para.
  2. Não se preocupe com a formatação: espaços, quebras de linha, dois-pontos, hifens e prefixos 0x ou \x são ignorados.
  3. Selecione Base64URL em Para se o valor for usado em uma URL, em um JWT ou em uma JSON Web Key.
  4. Copie o resultado em Base64.

Por que converter hex para Base64

A maioria das ferramentas de hash exibe os resultados em hex, mas muitos protocolos esperam Base64, que é um terço mais curto. Casos típicos:

  • Subresource Integrity. O atributo integrity de scripts e folhas de estilo contém um hash em Base64, como sha384- seguido de 64 caracteres Base64.
  • Content Security Policy. Os hashes que liberam scripts inline são escritos como 'sha256-...' com um valor em Base64.
  • Somas de verificação em APIs HTTP. O cabeçalho Content-MD5 e os cabeçalhos de soma de verificação do Amazon S3 levam o Base64 do hash binário, e não a string hex que o md5sum exibe.
  • Identificadores compactos. Um UUID tem 16 bytes: são 32 dígitos hex, mas apenas 22 caracteres em Base64URL sem preenchimento.

Formatos hex aceitos

Os dígitos hexadecimais não diferenciam maiúsculas de minúsculas. Antes de decodificar, o conversor remove espaços em branco, quebras de linha, dois-pontos, ponto e vírgula, vírgulas, hifens e os prefixos 0x, \x, % e &#x. Isso cobre impressões digitais do OpenSSL como AB:CD:EF, arrays em C como 0x12, 0x34, strings com escape como \x12\x34, bytes com codificação percentual e UUIDs com hifens.

Depois dessa limpeza, a entrada precisa ter um número par de dígitos, dois por byte. Uma quantidade ímpar é informada como erro e normalmente indica que um zero à esquerda se perdeu, por exemplo abc quando o correto seria 0abc.

Codifique os bytes, não o texto hex

Um erro comum é colar um hash em hex em um codificador comum de texto para Base64. Isso codifica os caracteres 0-9a-f em vez dos bytes que eles representam, e o resultado fica com o dobro do tamanho correto: 88 caracteres para um hash SHA-256 em vez de 44. Qualquer coisa que espere o hash binário, como um atributo SRI ou um cabeçalho de soma de verificação, vai rejeitá-lo. Este conversor decodifica o hex em bytes antes de codificar.

# Shell: hash em hex para Base64
printf '%s' "$HEX" | xxd -r -p | base64

# Valor SRI de um arquivo em um único passo
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (para silenciosamente no primeiro caractere que não é hex)
Buffer.from(h, 'hex').toString('base64')

Perguntas frequentes

Por que aparece um erro com a minha string hex?

Ou a entrada contém um caractere que não é um dígito hexadecimal, como a letra O no lugar de um zero, ou o número de dígitos é ímpar. A mensagem de erro mostra a posição do caractere inválido; no caso de comprimento ímpar, verifique se está faltando um 0 à esquerda.

Qual será o tamanho da saída em Base64?
Divida o número de dígitos hex por 2 para obter os bytes e conte 4 caracteres para cada 3 bytes, arredondando para cima. Um hash SHA-256 de 64 dígitos vira 44 caracteres Base64, incluindo um sinal =.
Como crio um hash de Subresource Integrity?
Calcule o hash SHA-384 do arquivo, converta o resultado em hex aqui e escreva integrity="sha384-..." com o valor em Base64. Com o OpenSSL dá para fazer tudo em um só comando: openssl dgst -sha384 -binary file.js | openssl base64 -A.
A saída é Base64 padrão ou seguro para URL?
É Base64 padrão, com + e /, como exigem SRI, CSP e os cabeçalhos de soma de verificação HTTP. Escolha Base64URL em Para quando precisar de uma saída segura para URL.