0/5

🔐 Base64, SHA1, SHA256 e MD5

Codifique e decodifique Base64 e gere hashes criptográficos direto no navegador. Sem servidor, sem rastreio, sem upload de texto sensível.

SHA-1, SHA-256 e SHA-512 usam window.crypto.subtle.digest() nativo. MD5 usa implementação em JS pura (não disponível no SubtleCrypto).

Como funciona Base64 e hash

Esta ferramenta da ModelosHub reúne dois utilitários essenciais para desenvolvedores: a codificação reversível Base64 e o cálculo de hashes criptográficos MD5, SHA-1, SHA-256 e SHA-512. Tudo roda no navegador — nenhum texto é enviado a um servidor, o que torna a página segura inclusive para conferência de tokens, chaves ou trechos confidenciais.

Base64 e hash são duas coisas completamente diferentes que costumam confundir iniciantes. Base64 é uma codificação reversível: você transforma bytes binários em uma string ASCII e pode voltar atrás. Hash é uma função de mão única: você recebe uma sequência de caracteres de tamanho fixo que identifica unicamente uma entrada, mas não é possível obter o original a partir do hash.

Algoritmos e formato

Base64 mapeia cada 3 bytes (24 bits) da entrada em 4 caracteres do alfabeto A-Z a-z 0-9 + /, completando com = quando o número de bytes não é múltiplo de 3. O resultado fica ~33% maior que o original — esse overhead é o preço de poder transportar dados binários por canais que só aceitam ASCII (HTTP headers, URLs, JSON, e-mail). No navegador, usamos btoa() e atob(), com cuidado para passar pelo TextEncoder a fim de preservar UTF-8 (acentos, emojis).

MD5 gera um hash de 128 bits (32 caracteres hex). É rápido, mas considerado quebrado para uso criptográfico desde 2004 — só use para checksum de integridade não-adversarial.

SHA-1 produz 160 bits (40 hex). Também já tem colisões conhecidas (Google SHAttered, 2017). Não use para assinaturas novas.

SHA-256 e SHA-512 são os padrões atuais da família SHA-2: 256 e 512 bits respectivamente. Continuam seguros para integridade e assinatura digital. Bitcoin, TLS e JWT padrão usam SHA-256.

Exemplos práticos

  • Base64 de "ModelosHub"TW9kZWxvc0h1Yg==
  • Base64 de "olá mundo" (UTF-8) → b2zDoSBtdW5kbw==
  • SHA-256 de "senha123"ef92b778ba... (sempre 64 hex)
  • MD5 de "" (string vazia)d41d8cd98f00b204e9800998ecf8427e
  • SHA-1 de "abc"a9993e364706816aba3e25717850c26c9cd0d89d

Quando usar cada um

Base64: para embutir imagens em CSS (data URI), enviar arquivos pequenos em JSON, gerar tokens não-secretos, codificar credenciais HTTP Basic Auth. Não é criptografia — qualquer pessoa decodifica em segundos.

MD5/SHA-1: apenas para verificar se um arquivo baixou corretamente (checksum não-adversarial) ou em sistemas legados que ainda exigem esses algoritmos. Nunca use para senhas.

SHA-256: assinatura JWT, certificados SSL, integridade de pacotes (npm, apt), prova de trabalho em blockchain, fingerprint de chaves. É o padrão moderno seguro.

SHA-512: quando você precisa de margem de segurança extra ou trabalha com sistemas que recomendam saída mais longa (Linux shadow file, por exemplo).

Cuidados importantes

Hash não é criptografia — não há "decriptar SHA-256". Quem afirmar que decriptou um hash provavelmente apenas consultou um rainbow table (banco de pares texto→hash pré-calculados).

Para armazenar senhas, hash puro não basta. Use sempre uma KDF (key derivation function) lenta com salt: bcrypt, scrypt, Argon2 ou PBKDF2 com pelo menos 100 mil iterações.

Base64 não esconde nada. Se você está colocando uma senha em Base64 num arquivo de configuração achando que está protegendo-a, está enganado — qualquer um copia o valor e decodifica.

Perguntas frequentes

Base64 é seguro para guardar senhas?

Não. Base64 é apenas uma codificação reversível. Decodificar é trivial e instantâneo. Para senhas use sempre bcrypt, Argon2 ou scrypt com salt aleatório.

Por que minha string com emoji deu erro ao codificar?

A função btoa() do navegador só aceita ASCII puro. Para texto UTF-8 (acentos, emojis) precisamos passar antes pelo TextEncoder e converter os bytes para a base — é exatamente o que esta ferramenta faz por baixo.

Posso reverter um hash SHA-256?

Não. Hashes são funções de uma via (one-way). O que existe são tabelas pré-computadas para entradas curtas e comuns ("123456", "password"), mas para qualquer string não-trivial é computacionalmente inviável.

MD5 ainda serve para alguma coisa?

Sim, para checksum de integridade não-adversarial (verificar se um arquivo baixou inteiro). Para qualquer caso que envolva segurança, use SHA-256 ou superior.

Qual a diferença entre Base64 padrão e Base64 URL-safe?

O Base64 URL-safe troca + por - e / por _ para poder aparecer em URLs sem precisar de escape. Esta ferramenta usa o padrão clássico, mas é fácil converter trocando os caracteres.

Por que dois hashes da mesma entrada são idênticos?

É justamente a propriedade fundamental de uma função hash determinística. Se a entrada for exatamente a mesma (byte a byte), o hash sempre será o mesmo, em qualquer máquina, em qualquer linguagem.