Pular para o conteúdo

Gerador de chave aleatória

Random Key Generator

Gera bytes aleatórios criptográficos como hex, Base64 ou Base64URL no comprimento escolhido, para segredos de aplicação.

Uma `SECRET_KEY` ou uma chave de assinatura de JWT precisa ser bytes aleatórios de um comprimento declarado em uma codificação declarada, e as improvisações habituais — um teclado esmagado, um UUID, um hash do nome do projeto — têm todas menos entropia do que parecem. Esta ferramenta produz os bytes e os codifica.

🔒 Roda inteiramente no seu navegadorrandomkeysecretgenerator

Segredo aleatório

HbHSrE8HKjs5RiP6m2AZEEKS_2giwey4ahK7eBZDTGM
Como JWK (oct)
{
  "kty": "oct",
  "k": "HbHSrE8HKjs5RiP6m2AZEEKS_2giwey4ahK7eBZDTGM",
  "ext": true
}

Chave do WebCrypto

Uma CryptoKey de verdade, exportada como JWK — dá para usar direto com crypto.subtle.

Cada byte vem de crypto.getRandomValues e fica nesta aba. Nada é gerado em um servidor nem enviado para um.

Como usar

  1. Escolha o comprimento em bytes

    32 bytes (256 bits) cobrem quase tudo — HMAC-SHA256, AES-256, chaves de sessão. Mais longo não é mais forte para esses usos; o algoritmo define o tamanho útil.

  2. Escolha a codificação que a configuração quer

    Hexadecimal é inequívoco e tem o dobro do comprimento. Base64URL evita `+`, `/` e `=`, que é o que você quer em uma URL, em um cabeçalho ou em um arquivo `.env` que outra coisa vai interpretar.

  3. Ponha no cofre de segredos, não no repositório

    Uma chave que entrou em um commit uma vez é uma chave que precisa ser rotacionada, por mais rápido que o commit tenha sido revertido. Gere uma diferente por ambiente.

Perguntas frequentes

De onde vem a aleatoriedade?

Do `crypto.getRandomValues`, o CSPRNG do navegador, semeado pelo sistema operacional. Nada é transmitido e nada é armazenado.

Uma chave gerada em um navegador é tão boa quanto uma de `openssl rand`?

A aleatoriedade tem a mesma qualidade — as duas vêm do sistema operacional. A diferença é onde a chave é exibida: em uma tela, possivelmente em um navegador que sincroniza, possivelmente com uma extensão observando o DOM. Em uma máquina que você não controla, use a linha de comando.

Posso usar isto para um UUID?

Use o gerador de UUID em vez disso — um UUIDv4 tem um layout fixo com seis bits gastos em versão e variante, então uma string aleatória crua não é um UUID válido.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.