Como usar
- Cole a string hex no campo Entrada. Hexadecimal já vem selecionado em De e Base64 em Para.
- Não se preocupe com a formatação: espaços, quebras de linha, dois-pontos, hifens e prefixos 0x ou \x são ignorados.
- Selecione Base64URL em Para se o valor for usado em uma URL, em um JWT ou em uma JSON Web Key.
- 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
integrityde scripts e folhas de estilo contém um hash em Base64, comosha384-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-MD5e 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 omd5sumexibe. - 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?
=.Como crio um hash de Subresource Integrity?
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?
+ 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.